我有一個gorm的many2many模型,像這樣:
我有一個gorm的many2many模型。
type User struct {
gorm.Model
用戶名 string
LikedBooks []Books `gorm: "many2many:user_liked_books;"`
}
type Book struct {
gorm.Model
名字 string
喜歡[]用戶`gorm: "many2many:user_liked_books;"`
}
在這里,一個User可以喜歡許多Book,一個Book可以有許多User喜歡它。
我現在想查詢那些被喜歡的書,并回傳前50本被喜歡的書。
我怎樣才能用gorm實作這一點呢?我不明白如何以book.like = true為條件進行查詢,按喜歡的數量排序,以50為限。
我在檔案或 stackoverflow 上找不到這樣的例子。
uj5u.com熱心網友回復:
這可以用你為你描述的請求構建一個SQL查詢的方式來完成,只是使用gorm函式。它可以看起來像這樣:
var books []Book
tx := db.Table("books")。
Joins("INNER JOIN user_liked_books ulb ON ulb.book_id = books.id") 。
Select("books.id, books.name, count(ulb.user_id) as likes_count") 。
Group("books.id, books.name") 。
Order("like_count desc")。
限制(50)。
查找(&books)
如果你也想加載Likes欄位,試著在上面的結構中添加.Preload("Likes")。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329366.html
標籤:
