@martin20 This works, tested:
$id = 1; /// just example, get from input
$userRoles = DB::table('user_has_roles')
->select('role_id')
->where('user_id', '=', $id) // $id is correctly passed id of user.
->get();
$ur = [];
foreach ($userRoles as $v) {
$ur[] = $v->role_id;
}
$allroles = DB::table('roles')
->selectRaw('id as role_id')
->get();
$ar = [];
foreach ($allroles as $b) {
$ar[] = $b->role_id;
}
$diff = array_diff($ar, $ur);
dd($diff);
Where roles are
The user has roles:
The difference shows:
array:1 [▼
0 => 1 //// does not have this role
]
Which is correct, in test I only assigned role 2 and 3 to user, so in above user does not have role 1.
I just tested using query builder so I wouldn't have to setup models also.
This works 100% You have to remember, these things can take a little trial and error.