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

fix

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