соединить две таблицы и получить строки в laravel - PullRequest
0 голосов
/ 14 марта 2020

У меня есть таблицы:

роли:

имя пользователя

role_user:

role_id user_id company_id user_type user_type

Я хочу, чтобы company_id отображал все его имена ролей.

role-> id is role_user-> role_id.

мой код:

$role = DB::table('role_user')->select('role_id')->where('company_id', $cp)->get();
foreach ($role as $key) {
    $role = $key;
}

$roles = Role::where('id', $role->role_id)->get();

В этом коде показано только одно имя роли, но должно отображаться 3. Если I dd ($ role) перед foreach, тогда он дает массив из 3 role_id

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Вы можете использовать объединения таблиц для получения желаемого результата:

$role = DB::table('role_user')
->leftjoin('roles', 'role_user.role_id', '=', 'roles.id')
->where('company_id', $cp)
->get();
0 голосов
/ 14 марта 2020

соедините их, используя [join][1]

$roles = Role::select('roles.*')
->join('role_user', 'role_user.role_id','=','roles.id')
->where('company_id', $cp)
->get();
...