Laravel: используйте сводную таблицу, чтобы получить группу с соответствующими ролями - PullRequest
0 голосов
/ 12 мая 2019

enter image description here

Я пытаюсь получить все роли в группе пользователей в красноречивом стиле.

//this function is defined in the ModelUserGroup
public function roles(){
    return $this->hasMany(ModelGroupRole::class, 'group_id','id');
}

Я пытаюсь получить все роли, подобные этой:

ModelUserGroup::with('roles')->get(),

Я также пытался ->hasManyThrough, но у меня это не работает.

Мне нужны все данные ролей, такие как идентификатор, имя и т. Д., Использующие с.

Ответы [ 2 ]

2 голосов
/ 12 мая 2019

Похоже, вам нужны отношения belongsToMany.

В вашей модели группы пользователей.

public function roles()
{
    // Assuming your role model is named ModelRole...
    return $this->belongsToMany(ModelRole::class, 'group_role', 'group_id', 'role_id');
}

Теперь вы можете делать следующее:

$group = ModelUserGroup::with('roles')->first();

dd($group->roles); // will be a collection of ModelRole's

Ответил на мой телефон, поэтому возможны синтаксические ошибки.

0 голосов
/ 12 мая 2019

Как указано здесь в разделе «многие ко многим», вы должны определить отношения следующим образом:

в User_Group:

 public function roles(){
       return  $this->belongsToMany('App\Pathto\Role', 'group_role','group_id','role_id');
    }

в роли:

 public function user_groups(){        
      return $this->belongsToMany('App\Pathto\UserGroup', 'group_role', 'role_id', 'group_id');
    }

Редактировать: ModelUserGroup::with('roles')->get() should work just fine then. (конечно, измените путь с вашим путем к моделям.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...