Reputation: 2800
If I get sum of a column using Model::sum('column')
, How can I get sums of multiple column returned in an array?
Upvotes: 0
Views: 1117
Reputation: 152860
Using sum()
for multiple columns is inefficient because it will trigger multiple queries. Add this to your model:
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();
}
Usage:
Model::sums(array('column', 'foo', 'bar'));
// or
Model::sums('column', 'foo', 'bar');
Upvotes: 3
Reputation: 60048
Can you just do
$total = Model::sum('column1') + Model::sum('column2') + Model::sum('column3');
Edit:
You could just make a function in your Model
class Model extends Eloquent {
public static function getColumn($column_name) {
return Model::sum($column_name);
}
}
Then in your view you just do
$value->getSum('column');
Upvotes: 0