Fix panic when using Select/Omit Associations with no schema, close #3160

This commit is contained in:
Jinzhu 2020-07-17 15:49:41 +08:00
parent 6dc583869b
commit e77156980c
1 changed files with 5 additions and 3 deletions

View File

@ -503,7 +503,7 @@ func (stmt *Statement) SelectAndOmitColumns(requireCreate, requireUpdate bool) (
for _, dbName := range stmt.Schema.DBNames { for _, dbName := range stmt.Schema.DBNames {
results[dbName] = true results[dbName] = true
} }
} else if column == clause.Associations { } else if column == clause.Associations && stmt.Schema != nil {
for _, rel := range stmt.Schema.Relationships.Relations { for _, rel := range stmt.Schema.Relationships.Relations {
results[rel.Name] = true results[rel.Name] = true
} }
@ -517,8 +517,10 @@ func (stmt *Statement) SelectAndOmitColumns(requireCreate, requireUpdate bool) (
// omit columns // omit columns
for _, omit := range stmt.Omits { for _, omit := range stmt.Omits {
if omit == clause.Associations { if omit == clause.Associations {
for _, rel := range stmt.Schema.Relationships.Relations { if stmt.Schema != nil {
results[rel.Name] = false for _, rel := range stmt.Schema.Relationships.Relations {
results[rel.Name] = false
}
} }
} else if field := stmt.Schema.LookUpField(omit); field != nil && field.DBName != "" { } else if field := stmt.Schema.LookUpField(omit); field != nil && field.DBName != "" {
results[field.DBName] = false results[field.DBName] = false