Не можете сравнить экземпляры Carbon в Laravel 5?

Я работаю с плагином fullcalendar и пытаюсь получить все события в моей базе данных после и до определенной даты. Полный календарь разбивает события на страницы, добавляя параметры, называемые «начало» и «конец». Я могу проанализировать их в экземплярах Carbon следующим образом:

Carbon::parse($data['start']);
Carbon::parse($data['end']);

Теперь это работает нормально:

$events = $this->event->where('user_id', auth()->user()->id)
                        ->get();

Но это не так:

$events = $this->event->where('user_id', auth()->user()->id)
                        ->where('start', '>=', Carbon::parse($data['start']))
                        ->where('end', '<=', Carbon::parse($data['end']))
                        ->get();

Почему я не публикую события между этими двумя датами со вторым подходом. Когда я запускаю первый подход, он работает нормально, извлекает все события и публикует их на текущей странице, но, к сожалению, он также извлекает множество событий, которые не нуждаются в извлечении.

После прослушивания запросов к БД запрос события выглядел так:

выберите * из events, где user_id = ? и start >= ? и end ‹= ?


person Rohan    schedule 11.05.2015    source источник
comment
Попробуйте получить фактические SQL-запросы, отправленные в базу данных, и обновить вопрос с ними.   -  person Furgas    schedule 11.05.2015
comment
Я слушал запросы к БД. Я предполагаю, что он не показывает значения в целях безопасности, но это то, что сказал файл журнала после того, как я зарегистрировал все запросы. Я включил в свой ответ только запрос события.   -  person Rohan    schedule 11.05.2015
comment
Попробуйте Carbon::parse($data['start'])->toDateString()   -  person Robert    schedule 11.05.2015
comment
Может быть, даты, указанные в вашем тесте, не соответствуют каким-либо записям? Есть ли какие-либо результаты, когда $data['start'] равно '1970-01-01 00:00:00', а $data['end'] равно '2020-01-01 00:00:00'?   -  person Furgas    schedule 12.05.2015


Ответы (1)


Это была небольшая ошибка с моей стороны, когда я не устанавливал дату окончания события в своей БД и, следовательно, запрос, в котором все события для аутентифицированных пользователей работали правильно.

На самом деле запрос для >= start также работал бы в одиночку, но <= end создавалась как проблема, поскольку end был нулевым, и, следовательно, Eloquent не возвращал никаких моделей.

person Rohan    schedule 12.05.2015