With Eloquent its very easy to retrieve relational data checkout following example with your scenario in Laravel 5
we have three models
1) Users ( has one role_user )
2) Roles (has many role_user)
3) RoleUser (belongs to User and Role )
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');
}
}
You need to check you database has relation and setup in models. Users has one role in role_user table. Role has many roles for users in role_user table. Role User belong to users and role. Once you setup the relationships in laravel/database, it becomes easy to retrieve the related information.
For example, if you want to retrieve an users by using the userrole, you would need to write:
$users = \App\Models\Users::with(['userrole'])->first();
If you want to get user role name than you can write:
$users->userrole->role->rolename;
Now come to your query: You want to select those users only who has role id 12. It's now becomes simple to write in eloquent format.
$users = \App\Models\RoleUser::where('role_id', 12)->with(['user', 'role'])->get();
you can learn more here: https://laravel.com/docs/5.6/eloquent-relationships