在我的数据库中有一个users表,通过多对多表连接到学校。学校有很多工作。我试着为一个特定的用户返回所有的学校和他们的工作。这是我目前的代码:
var user User
err := db.Where("id = ?", userID).Preload("Schools")
.Preload("Schools.Jobs", func(db *gorm.DB) *gorm.DB {
return db.Order("job.job_reference DESC")
}).First(&user).Error
return &user.Schools, err
gorm正在执行以下查询:
SELECT * FROM `user` WHERE (id = 'foo') ORDER BY `user`.`id` ASC LIMIT 1
SELECT * FROM `school`
INNER JOIN `user_school` ON `user_school`.`school_id` = `school`.`id`
WHERE (`user_school`.`user_id` IN ('foo'))
SELECT * FROM `job` WHERE (`school_id` IN ('1','2'))
ORDER BY job.job_reference DESC,`job`.`id` ASC
前两个生成的sql查询完全符合我的预期,但是最后一个查询尝试按我提供的条件和默认的按id排序。如果我删除了特定的排序指令,它仍然尝试按id排序。如何阻止它这样做?
暂无答案!
目前还没有任何答案,快来回答吧!