@maksutka777

Как посчитать среднее значение в базе данных?

Привет! У меня есть таблица books (список книг), для каждой книги есть отзывы с оценкой - они хранятся в таблице reviews. Мне нужно для каждой книги вывести среднюю оценку, но считать надо только те оценки, у которых active = true.

Вот этот код, выводит среднюю оценку без учета active, но как исправить так, чтобы учитывалось true? Уже полдня в поисках решения...

public function index() {
        $books = Book::query()->
        where('active', true)->
	withAvg('reviews', 'grade')->
        get();
        return view('books.index', compact('books'));
    }


В шаблоне:
{{ $book->reviews_avg_grade }}
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
$books = Book::query()
            ->where('active', true)
            ->withAvg(
                  ['reviews' => fn ($query) => $query->where('active', true)],
                  'grade'
            )
            ->get();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы