2015-05-11 2 views
1

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

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(); 

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

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

select * from eventsuser_id где =? и start> =? и end < =?

+0

Попробуйте получить фактические SQL-запросы, отправленные в базу данных, и обновите вопрос с ними. – Furgas

+0

Я слушал запросы БД. Я думаю, он не показывает значения для целей безопасности, но это то, что сказал файл журнала после того, как я зарегистрировал все запросы. Я включил в свой запрос только запрос к событию. – Rohan

+0

Попробуйте 'Carbon :: parse ($ data ['start']) -> toDateString()' – Robert

ответ

0

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

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

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