Eloquent - 数组中多列的总和

时间:2015-01-21 09:34:09

标签: laravel laravel-4 eloquent

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

2 个答案:

答案 0 :(得分:3)

对多列使用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');

答案 1 :(得分:0)

你能做到吗

$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');