如何检查行是2小时碳

时间:2015-08-17 09:42:30

标签: php laravel php-carbon

我正在使用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日期。

我做错了什么?

3 个答案:

答案 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;
}