相关疑难解决方法(0)

如何在Eloquent关系中对一个数据透视表列进行GROUP和SUM?

在Laravel 4; 我有模型ProjectPart,他们有一个透视表许多一对多的关系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)

relationships laravel eloquent laravel-4

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

eloquent ×1

laravel ×1

laravel-4 ×1

relationships ×1