Возврат нескольких отношений с Laravel Eloquent - PullRequest
0 голосов
/ 07 ноября 2019

enter image description here У меня есть таблица с именем users, и у пользователя разные роли, отношение в таблице

  • role_users (id,user_id,role_id)

теперьРоли имеют разные разрешения для разных ресурсов

  • permissions(id,name) (permissions: edit,create)
  • resources(id,name) (resources: post,comment,user)

Отношение роли с разрешением

  • role_resource_permissions (id,role_id,permission_id,resource_id)

Я хочу сделать Eloquent Query для поиска доступных разрешений в ресурсе для пользователя.

как я буду определять отношения в моделях для этого.

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 08 ноября 2019

Предполагая, что ваши отношения созданы правильно, я думаю, что это должно сработать. Попробуйте и дайте мне знать, как это происходит:

$user_id = 1;
$user_data = Roles::whereHas('users', function (Builder $query) use ($user_id) {
        $query->where('id', $user_id);
    })->with(['permissions', 'resources'])->get();

Он должен вернуть вам коллекцию ролей , относящихся к конкретному пользователю, с разрешениями и Ресурсы . Конечно, чтобы это работало, Роли должны иметь много пользователей .

Этот метод описан здесь: https://laravel.com/docs/5.8/eloquent-relationships#querying-relationship-existence

...