Fix find alias bug #1581
|
@ -35,9 +35,8 @@ var (
|
|||
|
||||
// Statement save all the sql info for executing SQL
|
||||
type Statement struct {
|
||||
RefTable *schemas.Table
|
||||
dialect dialects.Dialect
|
||||
//Engine *Engine
|
||||
RefTable *schemas.Table
|
||||
dialect dialects.Dialect
|
||||
defaultTimeZone *time.Location
|
||||
tagParser *tags.Parser
|
||||
Start int
|
||||
|
@ -985,8 +984,13 @@ func (statement *Statement) joinColumns(cols []*schemas.Column, includeTableName
|
|||
func (statement *Statement) CondDeleted(col *schemas.Column) builder.Cond {
|
||||
var colName = col.Name
|
||||
if statement.JoinStr != "" {
|
||||
colName = statement.quote(statement.TableName()) +
|
||||
"." + statement.quote(col.Name)
|
||||
var prefix string
|
||||
if statement.TableAlias != "" {
|
||||
prefix = statement.TableAlias
|
||||
} else {
|
||||
prefix = statement.TableName()
|
||||
}
|
||||
colName = statement.quote(prefix) + "." + statement.quote(col.Name)
|
||||
}
|
||||
var cond = builder.NewCond()
|
||||
if col.SQLType.IsNumeric() {
|
||||
|
|
|
@ -99,10 +99,11 @@ func (session *Session) find(rowsSlicePtr interface{}, condiBean ...interface{})
|
|||
}
|
||||
}
|
||||
|
||||
var table = session.statement.RefTable
|
||||
|
||||
var addedTableName = (len(session.statement.JoinStr) > 0)
|
||||
var autoCond builder.Cond
|
||||
var (
|
||||
table = session.statement.RefTable
|
||||
addedTableName = (len(session.statement.JoinStr) > 0)
|
||||
autoCond builder.Cond
|
||||
)
|
||||
if tp == tpStruct {
|
||||
if !session.statement.NoAutoCondition && len(condiBean) > 0 {
|
||||
var err error
|
||||
|
@ -111,23 +112,13 @@ func (session *Session) find(rowsSlicePtr interface{}, condiBean ...interface{})
|
|||
return err
|
||||
}
|
||||
} else {
|
||||
// !oinume! Add "<col> IS NULL" to WHERE whatever condiBean is given.
|
||||
// See https://gitea.com/xorm/xorm/issues/179
|
||||
if col := table.DeletedColumn(); col != nil && !session.statement.GetUnscoped() { // tag "deleted" is enabled
|
||||
var colName = session.engine.Quote(col.Name)
|
||||
if addedTableName {
|
||||
var nm = session.statement.TableName()
|
||||
if len(session.statement.TableAlias) > 0 {
|
||||
nm = session.statement.TableAlias
|
||||
}
|
||||
colName = session.engine.Quote(nm) + "." + colName
|
||||
}
|
||||
|
||||
autoCond = session.statement.CondDeleted(col)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if it's a map with Cols but primary key not in column list, we still need the primary key
|
||||
if isMap && !session.statement.ColumnMap.IsEmpty() {
|
||||
for _, k := range session.statement.RefTable.PrimaryKeys {
|
||||
session.statement.ColumnMap.Add(k)
|
||||
|
|
|
@ -794,6 +794,16 @@ func TestMoreExtends(t *testing.T) {
|
|||
Limit(10, 10).
|
||||
Find(&books)
|
||||
assert.NoError(t, err)
|
||||
|
||||
books = make([]MoreExtendsBooksExtend, 0, len(books))
|
||||
err = testEngine.Table("more_extends_books").
|
||||
Alias("m").
|
||||
Select("m.*, more_extends_users.*").
|
||||
Join("INNER", "more_extends_users", "m.user_id = more_extends_users.id").
|
||||
Where("m.name LIKE ?", "abc").
|
||||
Limit(10, 10).
|
||||
Find(&books)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestDistinctAndCols(t *testing.T) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user