Laravel 使用日期时间字段时没有返回结果

Laravel no results returned when working with datetime field

所以我有这个查询:

Report::whereDate('date', '=', Carbon::now()->format('Y-m-d H:i'))->get();

日期是这样存储的,例如:

2017-01-08 10:00:00

但是我从来没有得到任何结果,这与秒数有关吗?如果是这样,我怎样才能避免这种情况并得到我的结果?使用修改器可能会忽略秒数?

PS。我想从指定时间获取结果,因为我正在将它用于计划任务(命令)。电子邮件应在指定时间发送,并且时间会有所不同:)

Report模型中添加date$dates属性:

protected $dates = ['date'];

你说你想看时间,所以就这样做:

Report::where('date', Carbon::now())->get();

我明白了,我不想在我的数据库中使用布尔值来检查是否已为特定报告发送电子邮件,因为它们是每日报告。但我将在一天结束时进行另一项 cron 作业来重置这些布尔值。

我想我误解了这个问题。

匹配日期时间的便捷方法是使用 Carbon。

在您的模型中添加以下行。

protected dates = ['date'];

通过这样做,您的日期将被保存为 Carbon 实例。

现在你可以做

Report::whereDate('date', Carbon::now())->get();

你可以试试 WhereRaw

$format = Carbon::now()->format('Y-m-d H:i');
Report::whereRaw("date_format(date, '%Y-%m-%d %H:%i ')  = '$format'")