Fix Omit/Select without Model value, close #4098

This commit is contained in:
Jinzhu 2021-02-18 10:53:29 +08:00
parent 73d44a4f97
commit 79225bfe48
1 changed files with 9 additions and 7 deletions

View File

@ -600,12 +600,14 @@ func (stmt *Statement) SelectAndOmitColumns(requireCreate, requireUpdate bool) (
// select columns
for _, column := range stmt.Selects {
if column == "*" {
if stmt.Schema == nil {
results[column] = true
} else if column == "*" {
notRestricted = true
for _, dbName := range stmt.Schema.DBNames {
results[dbName] = true
}
} else if column == clause.Associations && stmt.Schema != nil {
} else if column == clause.Associations {
for _, rel := range stmt.Schema.Relationships.Relations {
results[rel.Name] = true
}
@ -618,11 +620,11 @@ func (stmt *Statement) SelectAndOmitColumns(requireCreate, requireUpdate bool) (
// omit columns
for _, omit := range stmt.Omits {
if omit == clause.Associations {
if stmt.Schema != nil {
for _, rel := range stmt.Schema.Relationships.Relations {
results[rel.Name] = false
}
if stmt.Schema == nil {
results[omit] = false
} else if omit == clause.Associations {
for _, rel := range stmt.Schema.Relationships.Relations {
results[rel.Name] = false
}
} else if field := stmt.Schema.LookUpField(omit); field != nil && field.DBName != "" {
results[field.DBName] = false