1) по конвенции если бы назвал таблицу project_user, второй параметр бы не потребовался
2) судя по коду, должен возвращать именно модели Project
3) если в таблице user_projects есть другие колонки помимо айдишников, то получить их можно от полученной модели Project вызвав ->pivot
в таблице user_projects хранится просто связка (две колонки user_id и project_id)
фишка в чем
допустим есть три проекта с ID 1, 2, 3
есть два пользователя с ID 1,2
пользователь 2 - просто клиент
в таблице user_projects есть только одна запись
user_id = 2 + project_id = 3
т.е. мы связали пользователя 2 и проект 3
здесь все понятно
при запросе user2->projects я получу один проект с ID 3
но, пользователь1 - это супер админ, у него никаких связей в таблице user_projects и когда я запрошу его проекты через user1->projects, то я не получу ничего, т.к. в таблице связки нет user_id = 1
но т.к. этот пользователь супер админ, мне бы хотелось получить все три проекта и не важно что связи прямой нет, это супер админ - супер перец, все должен видеть
я замечу, что само собой я могу использовать какой-то другой метод в моделе User, типа getProjects и уже в этом методе проверять
public function getProjects(){
if($this->isSuperAdmin){
return Project::all();
}else{
return $this->projects;
}
}
но мне интересно есть ли способ реализации получения всех записей именно в методе, который за отношение отвечает