В основном у меня три модели: свадьба, приглашения и пользователи. Weddings имеет приглашения и приглашает пользователей (имея в виду, что пользователь может принадлежать к нескольким приглашениям). Я хочу получить доступ к $wedding->users напрямую.
Wedding.php
class Wedding extends Model
{
public function invites()
{
return $this->hasMany(Invite::class);
}
...
Invites.php
class Invite extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
...
Таблицы:
Wedding
- id
- name
Invite
- invite_date
- wedding_id
- user_id
User
- id
- name
- email
И я хочу получить доступ к пользователям напрямую, используя $wedding->users
Каковы отношения между Wedding и пользователями?
@Kyslik это не HasManyThrough, потому что User не содержит invive_id
Вы можете изменить первичный / внешний ключи, просто увидев подпись определения hasManyThrough, belongsToMany также является действительный, в то время как он использует сводную таблицу invites, как упомянул Джонас. Разница просто семантическая, вы читаете это как «свадьба имеет много пользователей через приглашения» вместо «свадьба принадлежит пользователям».






Добавьте этот метод в свой класс Widding
public function users()
{
return $this->hasManyThrough('App\User', 'App\Invite');
}
для получения дополнительной информации о hasManyThrough см. документация.
Это не потому, что столбец пользователя не содержит invive_id