在Laravel 4; 我有模型Project和Part,他们有一个透视表许多一对多的关系project_part.数据透视表有一列count,其中包含项目中使用的部件ID的编号,例如:
id project_id part_id count
24 6 230 3
Run Code Online (Sandbox Code Playgroud)
这里的project_id6,是使用3件part_id230.
对于同一项目,可以多次列出一个部分,例如:
id project_id part_id count
24 6 230 3
92 6 230 1
Run Code Online (Sandbox Code Playgroud)
当我显示项目的零件清单时,我不想显示part_id两次,所以我将结果分组.
我的项目模型有:
public function parts()
{
return $this->belongsToMany('Part', 'project_part', 'project_id', 'part_id')
->withPivot('count')
->withTimestamps()
->groupBy('pivot_part_id')
}
Run Code Online (Sandbox Code Playgroud)
但当然我的count价值不正确,这就是我的问题:如何获得项目所有分组部分的总和?
这意味着我的零件清单project_id应该如下所示:
part_id count
230 4
Run Code Online (Sandbox Code Playgroud)
我真的很想把它放在Projects- Parts关系中,所以我可以急于加载它.
如果没有得到N + 1问题,我无法解决如何做到这一点,任何见解都表示赞赏.
更新:作为临时解决方案,我创建了一个presenter方法来获取项目中的总计数.但这给了我N + 1的问题.
public …Run Code Online (Sandbox Code Playgroud)