我想返回我的数据库表中一天或更早的所有行。我正在使用 Laravel 4。这是我尝试过的:
$date = date('Y-m-d H:i:s');
return MainContact::where(DATEDIFF('timestamp', $date), '<=', 1)->get();
这行不通。我阅读了文档,您似乎无法传递 Laravel MySQL 函数。 timestamp
是一个日期时间字段。如何在 Laravel 4 中比较这些日期?
user1977808 给你的答案不好,因为 MySQL 不能在时间戳列上使用索引,因为它必须为每一行计算 DATE_SUB 函数的输出。避免这样的查询,他们每次都必须处理整个表!
像这样的东西怎么样:
return MainContact::where('timestamp', '>=', time() - (24*60*60))->get();
我把它>=
放在那里是因为你说“一天或更少”,所以他们必须有比昨天晚的时间戳。
或者,
你可以使用与 Laravel 捆绑的Carbon API 。
ModelName::where( 'timestamp', '>=', Carbon::now() )->get();
参考: http: //laravel.com/docs/5.1/eloquent-mutators
return MainContact::where('timestamp', '>=', time() - (24*60*60))->get();
您也可以使用whereDate()
,whereDay()
和. 在这种情况下,可以使用 Carbon 的简单日期函数:whereMonth()
whereYear()
whereDate()
return MainContact::whereDate('dateField', '<', Carbon::now()->subDay())->get();
您还可以使用以下方法进行原始查询:
$results = DB::query( 'query' );
您只是不要将模型对象返回到结果变量中