2016-05-01 2 views
2

Я хочу получить записи, которые старше 2 дней.сравнение даты с laravel 4.2

Мои текущие записи базы данных для added_to_cart_at поле только один ряд от 2016-05-01 12:23:23

Я использовал ниже код

$date = new DateTime; 
$date->modify('-2 days'); 

$formatted_date = $date->format('Y-m-d H:i:s'); 
echo $formatted_date; // prints 2016-04-29 14:27:42 

    $result = DB::table('cart_reminder')->whereDate('added_to_cart_at','<=',$formatted_date)->get(); 
    foreach ($result as $row) 
    { 
     echo $row->user_email; 
    } 

В идеале выше where условие должно терпеть неудачу и должен возвращать 0 записей. Но он извлекает запись. Редакция:

$result = DB::table('cart_reminder')->whereDate(\Carbon\Carbon::now()->subDays(2)->toDateString())->get(); 
    foreach ($result as $row) 
{ 
    echo $row->user_email; 
} 

печатает ошибка

production.ERROR: exception 'ErrorException' with message 'Missing argument 2 for Illuminate\Database\Query\Builder::whereDate(), called in 

Почему?

+0

Я не думаю, что вы должны использовать 'whereDate()' здесь, только регулярные 'где()'. –

+0

изменен. все равно он печатает адрес электронной почты, и условие становится истинным. –

+0

Учитывая, что даты Laravel хорошо работают с Carbon, вы пытались передать объект Carbon вместо форматированной строки? – ThePurpleK

ответ

0

Вы не указываете колонку.

whereDate('added_to_cart_at', $carbon)