我希望获得相关模型上多列的平均值,如下所示:
$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);
这会导致多个查询。对这里的最佳实践有什么建议吗?
谢谢
最佳答案
为避免多次查询,您可以使用 raw database expression内Eloquent如下所示:
$averages = $this->reviews()
->select(DB::raw('avg(communication) c, avg(friendliness) f'))
->first();
echo $averages->c;
echo $averages->f;
自聚合函数名
avg
被 Laravel 支持的所有数据库都认可,这没什么大不了的。
关于laravel - 如何使用 Eloquent 平均多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18307355/