【问题标题】:How to get users having birthday today in Laravel?如何在 Laravel 中让用户今天过生日?
【发布时间】:2021-08-07 14:02:53
【问题描述】:

我需要在我的应用程序中向用户发送生日祝福。

我有一个用户表,其中包含 dateOfBirth 列。我需要一个查询来检索出生日期与今天匹配的用户。

例如,如果用户的 dateOfBirth 值为 1983-08-07,我必须向该用户发送生日祝福。 我使用了下面的代码,但给出的是空值,从这个查询中什么也得不到。

public function today(Request $request)
{
    $today = Carbon::now();
    $date = today();
    $user = user::whereDate('dateOfBirth', $today->day)->whereMonth('dateOfBirth', $today->isoFormat('DD'))->get();
    return view('today',compact('user'));
}

提前谢谢你。

【问题讨论】:

  • whereDate 将给定的值转换为 'Y-m-d' 格式...whereDay 将允许您比较日期。看起来您在单独的列中有月份?...也许显示您的表格?
  • dateOfBirth 格式为Y-m-d?
  • 格式化列dateOfBirth 是时间戳?
  • dateOfBirth 列的值类似于“1983-08-07”,并且该月没有单独的列。它不是时间戳。谢谢!!

标签: php laravel laravel-5.8


【解决方案1】:

您可以使用whereMonthwhereDay

$today=now();

$user=User::whereMonth('dateOfBirth',$today->month)
            ->whereDay('dateOfBirth',$today->day)
            ->get();

【讨论】:

【解决方案2】:

使用whereDate函数时,请确保传入的日期与sql格式匹配。可以使用函数date('d-m-Y H:i:s');格式化当前时间

【讨论】:

    【解决方案3】:

    如果我没记错的话,类型列dateOfBirth 是字符串。 所以你不能使用whereMonthwhereDay

    解决:

    user::where('dateOfBirth', 'LIKE', '%' . Carbon::now()->format('-m-d'))->get();
    

    或者 将类型dateOfBirth 更改为timestamp

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多