fix preload issue

This commit is contained in:
daniel 2020-02-18 23:49:40 +08:00
parent 79a77d771d
commit 43fa18e4f6

View File

@ -4,10 +4,23 @@ import (
"errors"
"fmt"
"reflect"
"sort"
"strconv"
"strings"
)
type searchPreloadSlice []searchPreload
func (s searchPreloadSlice) Len() int {
return len(s)
}
func (s searchPreloadSlice) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s searchPreloadSlice) Less(i, j int) bool {
return s[i].schema < s[j].schema
}
// preloadCallback used to preload associations
func preloadCallback(scope *Scope) {
if _, skip := scope.InstanceGet("gorm:skip_query_callback"); skip {
@ -33,6 +46,8 @@ func preloadCallback(scope *Scope) {
fields = scope.Fields()
)
sort.Sort(searchPreloadSlice(scope.Search.preload))
for _, preload := range scope.Search.preload {
var (
preloadFields = strings.Split(preload.schema, ".")