提交 7e0c241d authored 作者: mooncake's avatar mooncake

fix

上级 9001749d
...@@ -85,10 +85,14 @@ func ResolveSearchQuery(driver string, q any, condition Condition, pTName string ...@@ -85,10 +85,14 @@ func ResolveSearchQuery(driver string, q any, condition Condition, pTName string
} }
for i := 0; i < qType.NumField(); i++ { for i := 0; i < qType.NumField(); i++ {
tag, ok = "", false tag, ok = "", false
tag, ok = qType.Field(i).Tag.Lookup(FromQueryTag) field := qType.Field(i)
fieldName := field.Name
fieldValue := qValue.Field(i)
kind := field.Type.Kind()
tag, ok = field.Tag.Lookup(FromQueryTag)
if !ok { if !ok {
//递归调用 //递归调用
ResolveSearchQuery(driver, qValue.Field(i).Interface(), condition, tname) ResolveSearchQuery(driver, fieldValue.Interface(), condition, tname)
continue continue
} }
if tag == "-" { if tag == "-" {
...@@ -96,15 +100,30 @@ func ResolveSearchQuery(driver string, q any, condition Condition, pTName string ...@@ -96,15 +100,30 @@ func ResolveSearchQuery(driver string, q any, condition Condition, pTName string
} }
t = parseTag(tag) t = parseTag(tag)
if t.Join == "" { if t.Join == "" {
if qValue.Field(i).IsZero() { if !fieldValue.IsValid() {
continue continue
} }
switch fieldValue.Kind() {
case reflect.Ptr, reflect.Slice, reflect.Map, reflect.Chan, reflect.Interface:
if fieldValue.IsNil() {
continue
}
default:
if fieldValue.IsZero() {
continue
}
}
} }
if t.Column == "" { if t.Column == "" {
if qType.Field(i).Type.Kind() == reflect.Array && strings.HasSuffix(qType.Field(i).Name, "s") { if kind == reflect.Array || kind == reflect.Slice {
t.Column = snakeCase(strings.TrimSuffix(qType.Field(i).Name, "s"), false) if strings.HasSuffix(fieldName, "s") {
t.Column = snakeCase(strings.TrimSuffix(fieldName, "s"), false)
} else {
t.Column = snakeCase(fieldName, false)
}
} else { } else {
t.Column = snakeCase(qType.Field(i).Name, false) t.Column = snakeCase(fieldName, false)
} }
} }
if t.Table == "" { if t.Table == "" {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论