按关联计数转到gorm订单

时间:2019-01-12 09:25:16

标签: go go-gorm

我具有以下数据结构:

type Collection struct {
    gorm.Model
    Name            string
    CollectionItems []CollectionItem
}

type CollectionItem struct {
    CollectionID uint
    ItemID     uint
    Item
}

如何通过多个collections关联来查询collection_item表的排序结果,即具有多数项目的集合排在最前面。

谢谢。

1 个答案:

答案 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
}