以下是我如何获得项目和小组:
$groups = Group::with('projects')->get();
在我的project_group
数据透视表中有admin_id
字段,我需要检查该字段,例如只接受项目和组where admin_id = 1
,因此我需要将所有项目组都归档在数据透视表中等于1。
这是我的群组模型:
public function projects(){
return $this ->belongsToMany('App\Project','project_group')->withPivot('admin_id');
}
以下是1组的示例,但不知道如何为所有组服务:
Group::find(1)->proejcts()->where('admin_id', '=',1)->get();
答案 0 :(得分:1)
这将只为您提供admin_id = 1
$groups = Group::with(['projects' => function($q){
$q->where('admin_id', 1);
}])->get();
如果您只想要包含admin_id = 1
的论坛,则需要添加whereHas
条件:
$adminIdCondition = function($q){
$q->where('admin_id', 1);
};
$groups = Group::with(['projects' => $adminIdCondition])
->whereHas('projects', $adminIdCondition)
->get();;
对于第二种情况的更好的语法,请查看this other answer