Как мне остановить GORM от сортировки предварительной загрузки по идентификатору? - PullRequest
0 голосов
/ 11 сентября 2018

В моей базе данных есть таблица пользователей, объединенная с помощью таблицы «многие ко многим» для школ. В школе много рабочих мест. Я пытаюсь вернуть все школы и их рабочие места для конкретного пользователя. Это мой код:

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

Затем Горм выполняет следующие запросы:

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. Если я удаляю свои конкретные инструкции сортировки, он все равно пытается сортировать по идентификатору. Как я могу остановить это от этого?

...