У меня есть следующие таблицы, и я хочу сделать левое соединение с условием и другое внутреннее соединение из левой соединенной таблицы,
Таблица пользователей
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 и пытаюсь получить всех пользователей с их именем роли.