我正在使用Laravel 5.0并尝试删除created_at
早于3小时的表格中的所有行。
如何通过碳检查created_at
的年龄?
$time = Carbon::now()->subHour(3);
$photos = Photos::where('created_at','<=',$time);
if($photos){
echo 'older then 3 hours';
}else
echo 'not older then 3 hours';
}
此代码始终回显“早于3小时”,即使我更改了MySql表中的'created_at日期。
我做错了什么?
答案 0 :(得分:1)
你有两个问题:
->get()
)$photos
是一个Collection对象,总是求值为true
,即使它是一个空集合。解决方案
$time = Carbon::now()->subHour(3);
$photos = Photos::where('created_at','<=',$time)->get();
if($photos->count()){
echo 'older then 3 hours';
}else
echo 'not older then 3 hours';
}
答案 1 :(得分:0)
您实际上并未运行查询 - 您的if($photos)
只是返回true,因为它是一个对象(查询构建器)。
更改为:
$time = Carbon::now()->subHour(3);
$photos = Photos::where('created_at','<=',$time)->get();
if (!$photos->isEmpty()) {
...
}
答案 2 :(得分:0)
我的方法是这样的:
$photos = Photos::where(DB::raw("TIMESTAMPDIFF(HOUR, 'created_at', NOW())"), '>', 3)->get();
foreach($photos as $photo) {
// echo $photo->created_at . PHP_EOL;
}