В моей базе данных есть таблица пользователей, объединенная с помощью таблицы «многие ко многим» для школ. В школе много рабочих мест. Я пытаюсь вернуть все школы и их рабочие места для конкретного пользователя. Это мой код:
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. Если я удаляю свои конкретные инструкции сортировки, он все равно пытается сортировать по идентификатору. Как я могу остановить это от этого?