У меня есть 3 моделиLaravel HasManyThrough не работает в этой ситуации, как это сделать?
Пользователь
- ID
Событие
- ID
- end_time
EventUser (это представляет пользователя, который присоединился к событию с комментарием)
- user_id
- event_id
- комментарий
Мы хотим сделать $user->events
(перечислить информацию о событии для всех события пользователя присоединились)
Но, как вы можете видеть, промежуточная таблица представляет собой сводную таблицу ... поэтому таблица событий не делает t ссылается на него (что является четвертым параметром функции hasManyThrough).
Например, я могу получить событие подробнее для всех событий, к которым пользователь присоединился, что закончился.
Сейчас я делаю это в модели пользователя
private function eventQuery() {
return Event::join('event_user', 'events.id', '=', 'event_user.event_id')
->where('user_id', $this->id); // event_user.user_id
}
public function events() {
return $this->eventQuery()->get();
}
public function pastEvents() {
return $this->eventQuery()
->where('end_time', '<', new \DateTime()) // events.end_time
->get();
}
Но есть Laravel способ сделать это, как hasManyThrough в этой ситуации?