Laravel 如何使用Eloquent平均多个列?

Laravel 如何使用Eloquent平均多个列?,laravel,eloquent,Laravel,Eloquent,我希望得到相关模型上多个列的平均值,如下所示: $this->reviews()->avg('communication', 'friendliness') 其中,交流和友好是一组列名称。但是,聚合函数似乎只支持单个列名,因此我将执行以下操作: $attributes = array('communication', 'friendliness'); $score = array(); foreach ($attributes as $attribute) { $scor

我希望得到相关模型上多个列的平均值,如下所示:

$this->reviews()->avg('communication', 'friendliness')
其中,交流和友好是一组列名称。但是,聚合函数似乎只支持单个列名,因此我将执行以下操作:

$attributes = array('communication', 'friendliness');
$score = array();

foreach ($attributes as $attribute)
{
    $score[] = $this->reviews()->avg($attribute);
}

return round(array_sum($score) / sizeof($attributes), 1);
这将导致多个查询。对这里的最佳实践有什么建议吗


谢谢

为了避免多次查询,您可以在中使用,如下所示:

$averages=$this->reviews()
->选择(DB::raw('avg(通信)c,avg(友好)f'))
->第一个();
echo$averages->c;
echo$averages->f;

由于聚合函数名
avg
已被Laravel支持的所有数据库识别,这将不是什么大不了的事。

太好了,谢谢-DB:raw上的小错误,应该是DB::raw-干杯