У меня есть таблица фондов, которая содержит средства, связанные с различными факультетами, институтами, инициативами и т. Д. c. Фонд принадлежит ко многим факультетам, а факультеты могут иметь много фондов.
У меня также есть связь между многими пользователями и таблицей преподавателей, чтобы убедиться, что пользователь может видеть только средства, связанные с определенными c факультетами. .
funds table
--------------------
id
name
...
faculties table
--------------------
id
name
...
faculties_funds table
---------------------
id
faculty_id
fund_id
users table
---------------------
id
fname
...
faculties_user
--------------------
id
faculty_user
user_id
Вот как я определил свои отношения:
class Fund extends Model
{
public function faculties(){
return $this -> belongsToMany('App\Faculty');
}
}
class Faculty extends Model
{
public function funds(){
return $this -> belongsToMany('App\Fund');
}
public function users(){
return $this -> belongsToMany('App\User');
}
}
class User extends Model{
public function faculties(){
return $this -> belongsToMany('App\Faculty');
}
}
Мне нужно иметь возможность получить все средства, связанные с преподавательским составом, который сопоставлен авторизованному пользователю. к. Я протестировал отношения по отдельности, и все они работают, и я могу получить ответ, который также имеет массив отношений с сводной информацией, но я почему-то не могу получить желаемые средства.
Любая помощь будет полезна с точки зрения написания запроса, чтобы получить результаты, желательно без использования необработанных запросов или если мне нужно переделать структуру моей базы данных.
Вот мой код:
public function index()
{
$user = Auth::user();
if(Auth::user() -> role == 'superadmin'){
return view('funds.index')
-> with('funds', Fund::all());
}else{
dd( Auth::user() -> faculties); //I can see the faculties associated and also
dd( Auth::user() -> faculties() -> funds ); //doesnt work
}
}
DD Response