【问题标题】:Laravel collection groupBy() with sum()Laravel 集合 groupBy() 和 sum()
【发布时间】: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


【解决方案1】:

你可以显示这个package

$invoices = Invoice::withSum('items:price')->get();

【讨论】:

    猜你喜欢
    • 2019-02-02
    • 2018-02-07
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多