2015-08-17 1 views
1

Im работает с Laravel 5.0 и im пытается удалить все строки в таблице, где created_at старше, чем 3 часа.Как проверить строки старше, чем 2 часа Углерод

Как можно проверить возраст 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 часа», даже если я изменить the'created_at дату в MySql таблицы.

Что я делаю неправильно?

+0

Я не знаю, что вы делаете неправильно. Скажите нам, что не так. В чем твоя проблема? –

+0

Я изменю приведенный выше код и покажу вам – Spoofy

ответ

1

У вас есть 2 проблемы:

  • Вы фактически не принести результатов (->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'; 
} 
0

Вы на самом деле не работает запрос - ваш if($photos) просто возвращает истину, потому что это объект (конструктор запросов).

Изменить на:

$time = Carbon::now()->subHour(3); 
$photos = Photos::where('created_at','<=',$time)->get(); 
if (!$photos->isEmpty()) { 
    ... 
}