2016-07-27 4 views
2

Я работаю над приложением, которое использует Laravel и Eloquent, который определяет, что что-то (задание) не было выполнено вовремя. Он хранится в виде таблицы DATE. Например. 2016-07-18Laravel/Eloquent - Когда дата в прошлом

Я пытаюсь получить все записи, где сегодняшняя дата больше, чем «completed_date», хранящаяся внутри таблицы.

Вот что я пробовал:

$id = \Auth::user()->id; 
$now = \Carbon\Carbon::today(); 

$jobs = Job::whereHas('manager', function ($user) use ($id) { 
    $user->where('users.id', '=', $id); 
})->where('complete_date', '>', $now)->get(); 

Вопрос заключается в том, что она по-прежнему извлечения записей, которые в будущем. Например, запись возвращается, я проверил таблицу, а «complete_date» - 2016-08-31

Любые идеи, пожалуйста?

+1

Вы должны сделать '-> где ('complete_date', '<', $now)-> get();' !! not '>' – Maraboc

+0

@Maraboc Doing не возвращает намного больше строк. Я хочу проверить, является ли 'complete_date' выше сегодня, поэтому просрочено – Phorce

+0

Я точно не выполнил ваши потребности: p – Maraboc

ответ

-1

Ваш $ now переменная - это объект Carbon, а не дата.

Вы должны преобразовать объект даты:

$now = \Carbon\Carbon::now()->format('Y-m-d'); 

Тогда вы должны использовать эту переменную в вашей модели запроса.

+0

Автомобиль bon автоматически преобразуется в даты, когда используется в запросах. Нет необходимости вручную отформатировать его. – ceejayoz

+0

@ceejayoz, Carbon автоматически преобразуется в «Y-m-d H: i: s» не «Y-m-d». Поскольку тип базы данных 'DATE' не имеет времени, формат по умолчанию Carbon можно считать недопустимым для сравнения, не так ли? – Phargelm

+0

@Phargelm У меня не было проблем с передачей даты углерода в поле 'DATE'. Кажется, что Laravel обрабатывает его внутренне просто отлично (или SQL-сервер автоматически обрабатывает его, возможно). – ceejayoz

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