如何阻止gorm按id对预加载进行排序?

r6hnlfcb  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(563)

在我的数据库中有一个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排序。如何阻止它这样做?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题