Eloquent - 数组中多列的总和

Eloquent - Sums of multiple columns in an array

如果我使用 Model::sum('column') 获取列的总和,如何获取数组中返回的多列的总和?

你能做到吗

$total = Model::sum('column1') + Model::sum('column2') + Model::sum('column3');

编辑:

您可以在您的模型中创建一个函数

class Model extends Eloquent {
     public static function getColumn($column_name) {
          return Model::sum($column_name);
     }
}

那么在你看来你就是这么做的

$value->getSum('column');

对多列使用sum()是低效的,因为它会触发多个查询。将此添加到您的模型中:

public static function sums($columns){
    $instance = new static;
    $columns = is_array($columns) ? $columns : func_get_args();

    $selects = array_map(function($column){
        return DB::raw('SUM('.$column.') AS '.$column);
    }, $columns);

    return $instance->select($selects)->first();
}

用法:

Model::sums(array('column', 'foo', 'bar'));
// or
Model::sums('column', 'foo', 'bar');