【问题标题】:I need to get sum of difference of two columns in each row [closed]我需要得到每行中两列的差之和[关闭]
【发布时间】:2020-01-15 22:12:14
【问题描述】:

我有一个叫做sales的表,有100行,表有2个字段,即total和commission,我想把所有行的SUM(total-commission)变成一个值

【问题讨论】:

标签: php laravel


【解决方案1】:
  1. 您可以使用 Eloquent Builder sum() 函数。
$sum = Sale::select(
           DB::raw('commissioned_total as total - commission')
       )
       ->sum('commissioned_total');
  1. 或者你可以使用 Laravel Collection sum() 函数。
$sum = Sale::all()->sum(function($sale) {
    return $sale->total - $sale->commission;
});
  1. 您可以进一步增强此方法,

Sale模型上定义这个commissionedTotal()函数,并将sum函数用作高阶消息

销售模式

public function commissionedTotal()
{
    return $this->total - $this->commission;
}

控制器

$sum = Sale::all()->sum->commissionedTotal()

第三种方法更优雅,是 Laravel 首选的方法。

【讨论】:

  • 在类似情况下使用方法 2),我收到以下错误 ErrorException : stripos() expects parameter 1 to be string, object given. 似乎 sum 中的函数不接受对象作为参数
【解决方案2】:

根据您的问题,示例查询可能只有两个字段:

SELECT SUM(s.total-s.commission) as myResult from sales as s WITH (NOLOCK);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-02
    • 2022-07-23
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2018-08-25
    • 2017-10-28
    相关资源
    最近更新 更多