С Eloquent очень легко получить извлечение реляционных данных, следуя примеру с вашим сценарием в Laravel 5
у нас есть три модели
1) Пользователи (имеет одного role_user)
2) Роли (имеет много role_user)
3) RoleUser (принадлежит пользователю и роли)
1) Users.php
<?php
namespace App\Models;
use Eloquent;
class Users extends Eloquent{
protected $table = 'users';
public function userrole()
{
return $this->hasOne('App\Models\RoleUser');
}
}
2) Roles.php
<?php
namespace App\Models;
use Eloquent;
class Roles extends Eloquent
{
protected $table = "roles";
public function rolesuser()
{
return $this->hasMany('App\Models\RoleUser');
}
}
2) RoleUser.php
<?php
namespace App\Models;
use Eloquent;
class RoleUser extends Eloquent{
protected $table = 'role_user';
public function user()
{
return $this->belongsTo('App\Models\Users');
}
public function role()
{
return $this->belongsTo('App\Models\Roles');
}
}
Вам необходимо проверить, что ваша база данных имеет связь и настройки в моделях. Пользователи имеют одну роль в таблице role_user. Роль имеет много ролей для пользователей в таблице role_user. Роль пользователя принадлежат пользователям и ролям. Как только вы настроите отношения в laravel / database, вы сможете легко получить соответствующую информацию.
Например, если вы хотите получить пользователей с помощью роли пользователя, вам нужно написать:
$users = \App\Models\Users::with(['userrole'])->first();
Если вы хотите получить имя роли пользователя, вы можете написать:
$users->userrole->role->rolename;
/* here rolename the column name you have in role table for role name*/
Теперь перейдем к вашему запросу: вы хотите выбрать только тех пользователей, у которых есть идентификатор роли 12. Теперь стало просто писать в красноречивом формате.
$users = \App\Models\RoleUser::where('role_id', 12)->with(['user', 'role'])->get();
/* Here role_id is the column you have in role_user table as reference for role table */
вы можете узнать больше здесь: https://laravel.com/docs/5.6/eloquent-relationships