public function getEmployees(Request $request, Project $project)
{
$users = $project->users()
->ByRole($request->get('role'))
->orderBy('id', 'desc')
->paginate(request('limit', 10));
return UserResource::collection($users);
}
public function scopeByRole($query, $role)
{
if(!is_array($role)){
$role = [$role];
}
return $query->when($role, function($query, $role){
return $query->whereIn('role', $role);
});
}
public function getEmployees(Request $request, Project $project)
{
$users = $project->users()
->when($request->get('role'), function($query, $role){
return $query->ByRole($role);
})
->orderBy('id', 'desc')
->paginate(request('limit', 10));
return UserResource::collection($users);
}
Промежуточная модель к pivot таблице тоже иногда может быть нужна если к связке нужно что то привязать. Например в том проекте что я пишу у меня есть связь пробирка с операцией над ней - и к этой связи надо привязать используемые реагенты и еще кучу всего - и я завел через using модель pivot таблицы
То что вы пытаетесь сделать - называется один ко многим. Вы прописываете связку model Project -> model ProjectUser -> model User.
public function users()
{
return $this->belongsToMany(User::class, 'project_users', 'user_id', 'project_id');
}
Зачем вам доп модель ProjectUser для belongsToMany?
"SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db-admin.project_project_user' doesn't exist (SQL: select `project_users`.*, `project_project_user`.`project_id` as `pivot_project_id`, `project_project_user`.`project_user_id` as `pivot_project_user_id` from `project_users` inner join `project_project_user` on `project_users`.`id` = `project_project_user`.`project_user_id` where `project_project_user`.`project_id` = 1 and `project_users`.`id` = 2 limit 1)"
Просто в ProjectPolicy я проверю - кто создал проект и/или имеет ли отношение пользователь к проекту, но как я проверю, что идет вызов именно нужного меню и проекта (то есть, menu.project_id === project.id)?