2015-09-13 4 views
0

У меня есть следующее соотношение в моей модели ПользователиEloquent hasManyThrough также получить сводную таблицу запись

public function events($user_id) 
{ 

    return $this->find($user_id)->hasManyThrough('Event', 'Event_Member', 'user_id', 'id'); 
} 

И три таблицы

пользователя

id|name|... 
1 |bob | 
2 |mike| 

Event

id|name |location 
1 |meeting|office 

Event_Member

user_id|event_id|status 
1  |1  |Owner 
2  |1  |Guest 

Отношение hasManyThrough дает мне информацию из таблицы событий, но также нуждается в информации о состоянии из сводной таблицы, как это может быть сделано?

ответ

3

Что вы имеете в виду отношение «многие ко многим», а не «много-много». У вас есть две таблицы, соединенные через опорную точку, а не три таблицы родителя-ребенка-внука.

Я бы настоятельно предложил изменить отношения в обеих моделях. В модели пользователя, она будет выглядеть следующим образом:

public function events() 
{ 
    return $this->belongsToMany('Event', 'event_members'); 
} 

Обратите внимание, что в сводной таблице, как правило, под названием model1_model2 в алфавитном порядке - то есть, event_user в этом случае. Я предположил, что ваша сводная таблица называется event_members, если не просто ее изменить. Также обратите внимание, что я удалил user_id, так как пользовательская модель уже знает, какой пользователь он использует.

Затем вы можете легко получить доступ к сводным данным, например. например:

foreach ($user->events as $event) { 
    echo $event->pivot->status; 
} 
Смежные вопросы