试图弄清楚如何使用 gorm 有条件地构建查询,保存公共查询部分并执行它。
假设我正在查询如下课程列表。
common_query_part := app.GetDB(). // <= this returns *gorm.DB
Model(&models.Course{}).
Where("status=?", models.CourseStatusPublished) //models.CourseStatusPublished is a constant
现在我想获取已发布课程的列表。并得到它的计数。所以我就这样试了。
published_course_count := *common_query_part
然后是课程列表
result := common_query_part.
Offset(offset).
Limit(limit).
find(&courses)
if result.Error !=nil {
//handle error
}
并为计数
result = published_course_count.Count(&total)
if result.Error !=nil {
//handle error
}
第一部分完美运行。但是查询的第二部分不起作用,甚至不会产生任何错误。在这种情况下我该怎么办?常见的查询部分可能庞大而复杂。因此,为了获得计数而再次重写它可能容易出错。那么有没有办法让我保留公共查询部分并有时为已发布的课程执行它..有时为已发布的课程计数?
慕的地6264312
相关分类