Intereting Posts

Красноречивый много-ко-многим-как легко переносить дистанционные отношения

У меня 3 таблицы; пользователей, групп и разрешений

В моделях у меня есть отношения, установленные как OwnToMany в пользовательской модели:

public function groups() { return $this->belongsToMany('Group'); } 

в групповой модели:

 public function users() { return $this->belongsToMany('User'); } public function permissions() { return $this->belongsToMany('Permission'); } 

в модели разрешений:

 public function groups() { return $this->belongsToMany('Group', 'id'); } 

многие пользователи – для многих групп – многие группы – для многих разрешений

Я пытаюсь получить все разрешения пользователя, и не знаю, как выглядит код для него. Может ли кто-нибудь помочь?

Так вы можете это сделать:

 User::where('id', $id)->with(['groups.permissions' => function ($q) use (&$permissions) { $permissions = $q->get()->unique(); }])->first(); // then $permissions; // collection of unique permissions of the user with id = $id 

Он должен выглядеть примерно так, если вы хотите загружать …

 $user = User::where('id', $id)->with(['groups.permissions'])->first();