Как написать запрос на соединение с группой в красноречивом laravel? - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть три таблицы в моей базе данных.

пользователь: хранит информацию о пользователях.

книга: хранит информацию о каждой книге

book_reviews: хранит информацию о просмотре (например, общую точку) для каждой книги каждого пользователя.

Я хочу написать запрос в Laravel, чтобы получить книги с наивысшей средней оценкой, заданной пользователями.

Как мне написать следующий запрос SQL в Laravel, используя Eloquent?

SELECT books.*, AVG(book_reviews.overall_point) AS avg_point
FROM books JOIN
     book_reviews
     ON books.id = book_reviews.book_id
GROUP BY book.id
ORDER BY avg_point DESC

1 Ответ

0 голосов
/ 23 февраля 2019

Я думаю, что вы можете достичь с помощью orderByRaw() метода.С помощью этого метода вы можете заказать книги со средним общим баллом

Book::select("books.*")
    ->join("book_reviews br","br.book_id","=","books.id")
    ->orderByRaw("AVG(br.overall_point) desc")
    ->groupBy("books.id")
    ->take(10) # or how many book you want
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...