use TableName() if struct implement Tabler interface

This commit is contained in:
Septem Li 2022-07-31 19:31:42 +08:00
parent 6e03b97e26
commit 3099d61444

View File

@ -394,10 +394,14 @@ func (stmt *Statement) BuildCondition(query interface{}, args ...interface{}) []
selected := selectedColumns[field.DBName] || selectedColumns[field.Name] selected := selectedColumns[field.DBName] || selectedColumns[field.Name]
if selected || (!restricted && field.Readable) { if selected || (!restricted && field.Readable) {
if v, isZero := field.ValueOf(stmt.Context, reflectValue); !isZero || selected { if v, isZero := field.ValueOf(stmt.Context, reflectValue); !isZero || selected {
tableName := clause.CurrentTable
if e, ok := arg.(schema.Tabler); ok {
tableName = e.TableName()
}
if field.DBName != "" { if field.DBName != "" {
conds = append(conds, clause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: field.DBName}, Value: v}) conds = append(conds, clause.Eq{Column: clause.Column{Table: tableName, Name: field.DBName}, Value: v})
} else if field.DataType != "" { } else if field.DataType != "" {
conds = append(conds, clause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: field.Name}, Value: v}) conds = append(conds, clause.Eq{Column: clause.Column{Table: tableName, Name: field.Name}, Value: v})
} }
} }
} }