У меня есть простая структура, в которой сообщение имеет много голосов. Голос имеет свойство «значение», которое является либо 1, либо -1Лучший способ вернуть агрегирование сумм свойств отношений
При чтении всех сообщений мне хотелось бы выбрать эту сумму для каждого сообщения в обычное свойство на уровне сообщения. В настоящее время я сделать это
$posts = Post::where('published_at', '<=', $date)
->orderBy('published_at', 'desc')
->simplePaginate(20);
$posts->each(function($post) {
$post->overallRating = $post->getRating();
});
Это полностью рабочий, но я думаю, что это не так уж хорошо, чтобы сделать как 20 запросов к базе данных, чтобы прочитать рейтинги. Есть ли способ упростить это при фактической выборке сообщений?
public function getRating()
{
return $this->votes->sum('value');
}
Не могли бы вы показать метод 'getRating()'? –
добавил (а) в сообщение –
Какую версию Laravel вы используете? –