关系列的 Laravel Eloquent Sum

新手上路,请多包涵

我一直在研究购物车应用程序,现在我遇到了以下问题……

有一个用户、一个产品和一个购物车对象。

  • 购物车表仅包含以下列: iduser_idproduct_id 和时间戳。
  • UserModel hasMany 车(因为一个用户可以存储多个产品)。
  • CartModel belongsTo 用户和 CartModel hasMany 产品。

现在计算我可以调用的总产品: Auth::user()->cart()->count()

我的问题是:我怎样才能得到这个用户购物车中产品的价格(产品列)的 SUM()

我想用 Eloquent 而不是使用查询来完成这个(主要是因为我相信它更干净)。

原文由 Admiral 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 366
2 个回答
Auth::user()->products->sum('price');

该文档对于一些 Collection 方法来说有点简单,但除了 avg() 之外,所有查询构建器聚合似乎都可用,可以在 http://laravel.com/docs/ 找到 查询#聚合

原文由 user1669496 发布,翻译遵循 CC BY-SA 4.0 许可协议

这不是您的答案,而是为那些来这里寻找另一个问题的解决方案的人准备的。我想有条件地获取相关表的一列的总和。在我的数据库中,Deals 有很多活动,我想从 Activities 表中获取“amount_total”的总和,其中 activities.deal_id = deal.id 和 activities.status = paid 所以我这样做了。

 $query->withCount([
'activity AS paid_sum' => function ($query) {
            $query->select(DB::raw("SUM(amount_total) as paidsum"))->where('status', 'paid');
        }
    ]);

它返回

"paid_sum_count" => "320.00"

在交易属性中。

这就是我现在想要得到的总和,而不是计数。

原文由 ahmad ali 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题