fix issue in fields filtering for table name with as statement

This commit is contained in:
John Guo
2021-07-06 13:14:33 +08:00
parent 7e2605188d
commit 50e5dd5bd0
5 changed files with 10 additions and 7 deletions

View File

@ -206,7 +206,7 @@ func (m *Model) As(as string) *Model {
if m.tables != "" {
model := m.getModel()
split := " JOIN "
if gstr.Contains(model.tables, split) {
if gstr.ContainsI(model.tables, split) {
// For join table.
array := gstr.Split(model.tables, split)
array[len(array)-1], _ = gregex.ReplaceString(`(.+) ON`, fmt.Sprintf(`$1 AS %s ON`, as), array[len(array)-1])

View File

@ -96,7 +96,7 @@ func (m *Model) GetFieldsStr(prefix ...string) string {
if len(prefix) > 0 {
prefixStr = prefix[0]
}
tableFields, err := m.TableFields(m.tables)
tableFields, err := m.TableFields(m.tablesInit)
if err != nil {
panic(err)
}
@ -164,7 +164,7 @@ func (m *Model) GetFieldsExStr(fields string, prefix ...string) string {
// HasField determine whether the field exists in the table.
func (m *Model) HasField(field string) (bool, error) {
tableFields, err := m.TableFields(m.tables)
tableFields, err := m.TableFields(m.tablesInit)
if err != nil {
return false, err
}

View File

@ -76,7 +76,7 @@ func (m *Model) getFieldsFiltered() string {
panic("function FieldsEx supports only single table operations")
}
// Filter table fields with fieldEx.
tableFields, err := m.TableFields(m.tables)
tableFields, err := m.TableFields(m.tablesInit)
if err != nil {
panic(err)
}

View File

@ -47,7 +47,7 @@ func (m *Model) getModel() *Model {
// ID -> id
// NICK_Name -> nickname
func (m *Model) mappingAndFilterToTableFields(fields []string, filter bool) []string {
fieldsMap, err := m.TableFields(m.tables)
fieldsMap, err := m.TableFields(m.tablesInit)
if err != nil || len(fieldsMap) == 0 {
return fields
}
@ -201,7 +201,7 @@ func (m *Model) getLink(master bool) Link {
// It parses m.tables to retrieve the primary table name, supporting m.tables like:
// "user", "user u", "user as u, user_detail as ud".
func (m *Model) getPrimaryKey() string {
table := gstr.SplitAndTrim(m.tables, " ")[0]
table := gstr.SplitAndTrim(m.tablesInit, " ")[0]
tableFields, err := m.TableFields(table)
if err != nil {
return ""

View File

@ -39,7 +39,10 @@ func (m *Model) With(objects ...interface{}) *Model {
model := m.getModel()
for _, object := range objects {
if m.tables == "" {
m.tables = m.db.GetCore().QuotePrefixTableName(getTableNameFromOrmTag(object))
m.tablesInit = m.db.GetCore().QuotePrefixTableName(
getTableNameFromOrmTag(object),
)
m.tables = m.tablesInit
return model
}
model.withArray = append(model.withArray, object)