如何在雄辩的laravel中用group编写连接查询?

问题描述 投票:1回答:1

我的数据库中有三个表。

user:存储用户信息。

书:存储每本书的信息

book_reviews:存储每个用户每本书的评论信息(例如总点数)。

我想在Laravel中编写一个查询来检索用户给出的平均总点数最高的书籍。

如何使用Eloquent在Laravel中编写以下SQL查询?

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
mysql sql laravel eloquent
1个回答
0
投票

我认为你可以用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();
© www.soinside.com 2019 - 2024. All rights reserved.