У меня есть две таблицы: users, comments
.Как подсчитать среднее значение для каждого пользователя?
У каждого пользователя есть некоторые комментарии.
я запрос вроде как:
$users = User:with('comments')->get();
Как я могу посчитать среднее значение в поле comments.rate
where users.id = comments.user_id
В результате я должен получить коллекцию всех строк wityh информации пользователя и поле avg_rate
Я попытался использовать ->avg()
, но он возвращает только одну строку, а не для каждого
У меня есть собственное решение, но у меня есть желание перенести этот код в модели:
{{$users->reviewsAverage()->first()->avg("rate")}}
Модель:
public function reviewsAverage()
{
return $this->hasMany('App\Review', 'user_id', 'id'); //->first()->avg('rate');
}
Возможный дубликат [Laravel: как получить среднее значение для вложенных hasMany отношений (hasManyThrough)] (http://stackoverflow.com/questions/27698690/laravel-how-to-get-average-on-nested-hasmany -relationships-hasmanythrough) –