我具有以下数据结构:
type Collection struct {
gorm.Model
Name string
CollectionItems []CollectionItem
}
type CollectionItem struct {
CollectionID uint
ItemID uint
Item
}
如何通过多个collections
关联来查询collection_item
表的排序结果,即具有多数项目的集合排在最前面。
谢谢。
答案 0 :(得分:1)
gorm中没有像rails counter cache
这样的功能,但是gorm具有回调before*
& after*
,因此很容易实现按收件计数的顺序。
例如:
// Updating data in same transaction
func (c *Collection) AfterUpdate(tx *gorm.DB) (err error) {
tx.Model(&Collection{}).Where("id = ?", c.ID).Update("items_count", gorm.Expr("items_count + ?", 1))
return
}