Gorm 按关联计数排序
Go gorm order by association count
我有以下数据结构:
type Collection struct {
gorm.Model
Name string
CollectionItems []CollectionItem
}
type CollectionItem struct {
CollectionID uint
ItemID uint
Item
}
我如何查询 collections
table 按多个 collection_item
关联排序的结果,即包含最多项目的集合排在第一位。
谢谢。
没有像rails counter cache
in the gorm, but gorm has callbacks 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
}
我有以下数据结构:
type Collection struct {
gorm.Model
Name string
CollectionItems []CollectionItem
}
type CollectionItem struct {
CollectionID uint
ItemID uint
Item
}
我如何查询 collections
table 按多个 collection_item
关联排序的结果,即包含最多项目的集合排在第一位。
谢谢。
没有像rails counter cache
in the gorm, but gorm has callbacks 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
}