【问题标题】:How to get sum along with this Laravel Eloquent query如何与这个 Laravel Eloquent 查询一起获得总和
【发布时间】:2020-04-18 23:17:33
【问题描述】:

数据库结构:
表: sales_payments
列: id, payer_id, payment_status, amount , ...

请看这个雄辩的询问。它工作正常,但现在我需要金额键的总和以及这个给定的雄辩查询和 where 条件。

    $query =  SalesPayment::with(['abc.xyz'])

        ->whereHas('abc.xyz', function ($query) use ($options) {
            $query->where('xyz_id',$options['xyz_id']);
        });

    $query->where(['key3' => key3(), 'payment_status' => PAYMENT_STATUS_SUCCESS]);
    $query->orderBy('created_at', 'desc');
    return $query->paginate(config('constants.PAGE_LIMIT'));

可能的解决方案

只需按如下所述进行选择

$query =  SalesPayment::select('*', \DB::raw('SUM(amount) AS total_sale_amount')->with ....

我已经测试过这个解决方案,它工作正常。

如果有比这更好的解决方案,请告诉我。我也在寻找其他一些解决方案。

编辑:但是这个解决方案有一个问题,当我将聚合函数(sum)放入 select 时它只返回一条记录,否则它返回多条记录。

【问题讨论】:

  • 是的!这是完美的
  • @YasinPatel 但是这个解决方案有一个问题,当我将聚合函数(sum)放入 select 时它只返回一条记录,否则它返回多条记录。
  • 看起来不错。您可以获得该列的表格总和以及表格记录

标签: laravel laravel-5 eloquent laravel-4


【解决方案1】:

您可以在查询中使用sum 方法。

$amount = $query->sum('amount');

将执行一个新的具有相同条件的查询来计算一列的总和。

https://laravel.com/docs/6.x/queries#aggregates

【讨论】:

  • 但它会在数据库端执行 2 个单独的查询
  • 没错,我不知道其他解决方案。但在您的情况下,我认为您必须使用 2 个查询,因为您使用分页。我假设您想要所有页面的总数,但只选择当前页面的行,
猜你喜欢
  • 2015-02-08
  • 1970-01-01
  • 2021-11-06
  • 2019-09-21
  • 2019-12-20
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多