Get all users with role in Laravel
If you are using spatie/laravel-permission or backpack/permissionmanager you can simply do:
$teachers = User::role('Teacher')->get();
What you're currently asking laravel for in your $students
query, is 'give me all the students, and for each student get me all of their roles if the role is teacher'
Try using the whereHas
$students = User::whereHas(
'roles', function($q){
$q->where('name', 'Teacher');
}
)->get();
This should get you the users, but only where they have a role where the name is teacher.
Try This.
Role::where('rolename', 'user')->first()->users()->get()