【发布时间】:2019-01-30 03:47:18
【问题描述】:
是否可以在列上使用 sum() 对 laravel 集合进行分组? 集合看起来像这样:
[
{id: 1, name: A, quantity: 1, price: 20, options:[{id:10,name:AC}{id:13,name:AB}]},
{id: 1, name: A, quantity: 5, price: 15, options:[{id:20,name:AV},{id:30,name:AZ}]},
{id: 1, name: A, quantity: 10, price: 15, options:[{id:20,name:AV},{id:30,name:AZ}]},
{id: 1, name: A, quantity: 2, price: 10, options:[]},
{id: 1, name: A, quantity: 4, price: 10, options:[]}
]
第 2 行和第 3 行相同,我需要 sum() 数量。
第 4 行和第 5 行相同,我需要 sum() 数量。
结果应该是这样的:
[
{id: 1, name: A, quantity: 1, price: 20, options:[{id:10,name:AC}{id:13,name:AB}]},
{id: 1, name: A, quantity: 15, price: 15, options:[{id:20,name:AV},{id:30,name:AZ}]},
{id: 1, name: A, quantity: 6, price: 10, options:[]},
]
【问题讨论】:
-
这些是 Eloquent 模型吗?如果是这样,最好从数据库查询级别进行
-
Yes 是一个雄辩的合集。该选项是一个关系,我不知道如何按关系内容查询组。
-
你能让“相同”行的 ID(或任何其他字段)是唯一的吗?这样你就可以 groupBy ID 集合。您可以通过一些收集处理将其存档,但我不知道是否存在一种方法。
-
我可以编辑数据库,但是除了制作一串选项之外,我还能做些什么?如果我这样做,那不会破坏拥有联结表 transacation_options 的目的吗?
-
这能回答你的问题吗? Laravel Eloquent: sum with groupBy
标签: laravel collections laravel-5.6 laravel-collection