2015-10-07 3 views
0

У меня есть поле под названием RegistrationDate, которое мне нужно проверить на время с тех пор.Laravel 4 Eloquent - где timestamp старше 3 лет

мне нужен где-Клаус, который будет делать:

if (time() - strtotime($car->RegistrationDate) > 3*365.25*24*60*60) 
    over 3 years old 
} 

Итак:

$cars::where('RegistrationDate', '>', '3 years old')->get(); 

, но не знаю, как сделать это, мои даты сохраняются как временные метки: 2009-07- 17 00:00:00.

спасибо.

ответ

1

Использование библиотеки углерода. Я думаю, что он уже загружен рамкой. Но если вы не можете загрузить композитор. https://github.com/briannesbitt/Carbon

$cars::where('RegistrationDate', '>', Carbon\Carbon::now()->subYears(3))->get(); Предполагая $cars красноречивый объект для Car модели;

Кроме того, не имеет отношения к вопросу ... но ваши соглашения об именах таблиц немного странны.

$cars = Car::where('registration_date', '>', Carbon\Carbon::now()->subYears(3))->get();

+0

Спасибо, а не мой код/​​таблица, назвав печально. – Lovelock

0

Вы также можете использовать DateTime и DateTimeInterval класс:

$currentDate = new DateTime(); // get current date time 
$currentDate->sub(new DateInterval('P3Y')); // substract 3 years from current date 

После этого вы можете использовать $currentDate в вашем коде, как:

$cars::where('RegistrationDate', '>', $currentDate)->get(); 

Вы также можете конвертировать $currentDate в SQL datetime, в которой вы нуждались:

$currentDateStr = $currentDate->format('Y-m-d H:i:s'); 
Смежные вопросы