如果我使用Model::sum('column')
得到一列的总和,我如何获得数组中返回的多列的总和?
答案 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');