У меня есть таблица событий с 4 событиями с разным стартом и окончанием.Красноречивый: проверьте, находится ли дата между датой начала и окончания
mysql> select id, event_name, event_startdate, event_closedate from events;
+----+--------------+---------------------+---------------------------+
| id | event_name | event_startdate | event_closedate |
+----+--------------+---------------------+---------------------------+
| 1 | Event 1 | 2016-05-01 00:00:00 | 2016-06-30 00:00:00 |
| 2 | Event 2 | 2016-06-01 00:00:00 | 2016-07-30 00:00:00 |
| 3 | Event 3 | 2016-07-01 00:00:00 | 2016-08-30 00:00:00 |
| 4 | Event 4 | 2016-09-01 00:00:00 | 2016-10-30 00:00:00 |
+----+--------------+---------------------+---------------------------+
Я хочу вернуть текущие события. В MySQL работает нижеследующий запрос:
mysql> select id, event_name, event_startdate, event_closedate from events where now() >= event_startdate and now() <= event_closedate;
+----+--------------+---------------------+---------------------------+
| id | event_name | event_startdate | event_closedate |
+----+--------------+---------------------+---------------------------+
| 1 | Event 1 | 2016-05-01 00:00:00 | 2016-06-30 00:00:00 |
| 2 | Event 2 | 2016-06-01 00:00:00 | 2016-07-30 00:00:00 |
+----+--------------+---------------------+---------------------------+
Теперь, я хочу создать Красноречивый эквивалент. Я создал следующее:
$current_events = DB::table('events')->select('id','event_name', 'event_startdate', 'event_closedate')->where(DB::raw('now()'), '>=', 'event_startdate')->where(DB::raw('now()'), '<=', 'event_closedate')->get();
Когда я делаю «дд» выход в Laravel, я получаю:
"select `id`, `event_name`, `event_startdate`, `event_closedate` from `events` where now() >= ? and now() <= ?"
выше, является очень похож на запрос в MySQL, который возвращает два текущих событий , так что я ожидал увидеть два события, на мой взгляд, но ничего не выводится, так что я подозреваю, что я делаю что-то неправильно
зрения:
@foreach($current_events as $event)
<tr>
<td align="center" class="hidden-xs">{{ $event->id }}</td>
<td>{{ $event->event_name }}</td>
<td>{{ $event->event_startdate }}</td>
<td>{{ $event->event_closedate) }}</td>
</tr>
@endforeach
Любая причина, по которой это не возвращает два текущих события?
Два запроса точно такие же, насколько я могу видеть. Почему бы вам не 'dd ($ current_events)' и посмотреть, что вы получаете. Возможно, код, на ваш взгляд, является проблемой, а не запросом. – haakym
Я сделал dd ($ current_events), это в исходном вопросе. Оба одинаковы. – wiwa1978
Жаль, если я не понял. Я не говорю вам сбрасывать запрос, т. Е. '-> toSql'. Я предлагаю вам сбросить значение запроса, т. Е. '-> get()' – haakym