Как написать запрос laravel с левым соединением и внутренним соединением? - PullRequest
0 голосов
/ 23 января 2019

У меня есть следующие таблицы, и я хочу сделать левое соединение с условием и другое внутреннее соединение из левой соединенной таблицы,

Таблица пользователей

  
id  |  name  
 1     john  
 2     sam  
 3     cecil 

Таблица ролей

  
id | name  
 1  admin  
 2  editor 

таблица model_has_roles

role_id  | model_type | model_id
  1         App\User       1
  2         App\User       2

Что я хочу

Выполните левое соединение между таблицей пользователя и таблицей model_has_roles в столбце user.id и model_has_roles.model_id, если model_type - это «App \ User» , а затем другое внутреннее соединение между таблицей Roles и таблицей model_has_roles для role_id. и столбец Roles.id. Таким образом, результат должен быть таким,


id | name | role

 1   john   admin
 2   sam    editor
 3   cecil   -

Я попробовал следующий запрос, но не работает правильно,

 DB::table('users')->select('id', 'name', 'email', 'created_at', 'role_id')
            ->leftJoin('model_has_roles', 'model_has_roles.model_id', '=', 'users.id')
            ->where('model_has_roles.model_type', '=', 'App\User')
            ->paginate(1);

Если вы можете помочь мне написать красноречивый запрос для этого.

Спасибо

P.S: На самом деле я использую разрешение spatie / laravel и пытаюсь получить всех пользователей с их именем роли.

1 Ответ

0 голосов
/ 24 января 2019

Это должно работать просто отлично:

App\User::with('roles')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...