我使用Laravels的关系很多。我有2个表projects
和groups
以及数据透视表project_group
现在我可以这样做:
$groups = \App\Project::findOrFail(Auth::user() -> id)->groups()->where('adminid','=',Auth::user()->id)->get();
它将只返回群组......就像这样:
Design
SEO
但我需要这样回来:
Design(Project2,Project3)
SEO(Porject1)
因此,对于每个循环,我需要将组和所有项目链接到该组。
以下是我与Project modul的关系:
public function groups(){
return $this ->belongsToMany('App\Group','project_group')->withPivot('admin_id');
}
答案 0 :(得分:1)
您可以在群组模型中定义关系的倒数。
public function projects(){
return $this->belongsToMany('App\Project','project_group')->withPivot('admin_id');
}
然后,在您的雄辩查询中使用它。
$groups = Group::with('projects')->get();
您将能够遍历您的小组,并在每个小组中获得所有项目。
foreach($groups as $group) {
foreach($group->projects as $project){
//your project
}
}
我不太了解Auth::user() -> id
的使用情况,但如果您只想要当前用户为admin的项目,则可以在with函数中使用条件。
$groups = Group::with(['projects' => function($query) {
$query->where('adminid', Auth::user()->id)
}])->get();