У меня 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();