Мой текущий подход выглядит так:
public function overallAverage()
{
$ids = $this->reviews()->pluck('id')->all();
return Rating::where('rating_type_id', 0)
->whereIn('offer_review_id', $ids)
->avg('rating_value');
}
Но мне не нравится, что мне сначала нужно собрать все идентификаторы, чтобы вычислить средние значения. Чтобы понять это лучше, вот схема моих таблиц:
Поэтому, когда у меня есть Предложение, я хочу вычислить все средние значения рейтингов, у которых рейтинг_типа_идентификатора равен 0.
1 Предложение имеет много отзывов. В одном обзоре предложений есть много оценок (например, общая оценка, оценка вкуса, оценка стоимости и т. Д.).
С отзывами () Я получаю много отношений
public function reviews(){
return $this->hasMany(OfferReview::class);
}