Laravel Eloquent Sum of relation's column

2022-08-30 06:49:28

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

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

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

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

我的问题是:我如何获得该用户购物车中产品的价格(产品列)?
我想用Eloquent而不是通过使用查询来完成这项工作(主要是因为我相信它更干净)。SUM()


答案 1
Auth::user()->products->sum('price');

对于某些方法,文档有点轻,但除了可以在 http://laravel.com/docs/queries#aggregates 中找到之外,所有查询生成器聚合似乎都可用。Collectionavg()


答案 2

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

$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"

在“交易”属性中。

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


推荐