Заказать коллекцию по реляционным принадлежащим многим полям
У меня есть модель Event, принадлежащая модели Date
public function dates () {
return $this->belongsToMany('App\Date', 'event_date');
}
У каждой даты есть дата начала и окончания.
Es:
Event-> name = Stackru Meeting
Событие-> даты () =
[0] ('start' => 01-24-2018, 'end' => 01-27-2018)
[1] ('start' => 04-24-2018, 'end' => 04-27-2018)
Event-> name = Пасхальная вечеринка
Событие-> даты () =
[0] ('start' => 04-18-2018, 'end' => 04-19-2018)
Я хочу упорядочить события по дате начала на основе сегодняшней даты, поэтому в примере "Пасхальная вечеринка" является первым событием, поскольку имеет первую дату начала> сегодняшнюю дату. Затем:
("Пасхальная вечеринка", "Встреча Stackru")
Как я могу создать такой заказ?
1 ответ
Если у вас есть event
отношение в Date
модель, я думаю, вы можете сделать
// Get dates with event, sort by start date
$datesWithEvents = Date::whereBetween($yesterday,$today)->orderBy('start')->with('event');
// you can Extract only events
$event = $datesWithEvents->pluck('event'); // I think you need to add "->with('event')" into the return event method on Date Model
// or directly return dates with events
return $datesWithEvents;