Let's suppose I have 20 users whose roles are admin, agent, manager and customer. While fetching all 20 users, it fired 21 queries. I want to eager load this.
An example of a query out of 20 fired queries while fetching all users.
select `roles`.*, `model_has_roles`.`model_id` as `pivot_model_id`, `model_has_roles`.`role_id` as `pivot_role_id`, `model_has_roles`.`model_type` as `pivot_model_type` from `roles` inner join `model_has_roles` on `roles`.`id` = `model_has_roles`.`role_id` where `model_has_roles`.`model_id` = 1 and `model_has_roles`.`model_type` = 'App\Models\User'
This is my controller
public function index(){
$data=User::get();
$info=Role::get();
$permi=Permission::get();
return view('admin.role',['userinfo'=>$data, 'roleinfo'=>$info,'per'=>$permi]);
}
This is my blade view where i retrieved user's information and assigned role to that user
@foreach ($userinfo as $users)
<tr>
<th scope="row">{{ $users->id }}</th>
<td>{{ $users->name }}</td>
<td>{{ $users->email }}</td>
<td>
@if(!empty($users->getRoleNames()))
@foreach($users->getRoleNames() as $v)
<label class="badge badge-success">{{ $v }}</label>
@endforeach
@endif
</td>
</tr>
@endforeach
I know I have to show a relation in the User model but I am confused about how to show a relation. Also, I have used spatie package and auth so my User model is extending Authenticatable. I am super confused about what to do.