Заказать коллекцию по реляционным принадлежащим многим полям

У меня есть модель 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;
Другие вопросы по тегам