2016-03-08 5 views
0

При попытке найти все записи, где время created_at больше определенного значения, похоже, что оно не работает.Как запросить created_at в Laravel

Например, я попытался это:

return Foo::where('created_at', '>', '1457408361')->get(); 

Но постоянно возвращается все рекорды!

+0

Что такое 1457408361? –

+0

@JilsonThomas Timestamp. – xdevnull

+0

Использовать дату вместо даты отметки времени() – xdevnull

ответ

2

Вы всегда можете использовать уголь для преобразования метки времени UNIX:

Foo::where('created_at', '>=', Carbon::createFromTimestamp(1457408361))->get(); 

Таким образом, вы можете преобразовать целое число, например углерода и сравнить его, как описано выше.

Вы можете прочитать здесь: Carbon http://carbon.nesbot.com/docs/

+0

@YahyaUddin Это не – xdevnull

+0

Проверить обновленный –

+1

Почему вы используете 'now()' в вашем примере? Почему каждый может использовать запрос, где вы ищете дату, которая равна '> =', чем 'now'? Я думаю, ваш пример ''created_at', '> =', Carbon :: now()' ничего не может вернуть. –

2

Использование метода whereDate() запроса:

$date = Carbon::yesterday(); // Create date however you want 

Foo::whereDate('created_at', '>', $date); 

Если вы делаете эти типы запросов много, я бы рассмотреть обернув его в запрос Объем:

use DateTimeInterface; 

class Foo extends Model 
{ 
    public function scopeCreatedAfter(DateTimeInterface $date) 
    { 
     return $query->whereDate('created_at', '>', $date); 
    } 
} 

Использование:

Foo::createdAfter($date)->get(); 
+0

Что такое 'whereDate' excatly –

+0

Erm, это метод? –

+0

Lol. Но в чем разница между 'where' и' whereDate' –

Смежные вопросы