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');
如果我使用 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');