diff --git a/lxDb/model.go b/lxDb/model.go index 34cdfa3..29bf369 100644 --- a/lxDb/model.go +++ b/lxDb/model.go @@ -39,6 +39,7 @@ type Condition struct { Field string // 字段 Operator string // 操作类型 Arg interface{} // 值 + Args []interface{} } // PaginationQuery 查询条件 @@ -123,8 +124,8 @@ func (q *PaginationQuery) Ors(condition string) { } // And 自定义条件, 如: (length(field) = 4 OR length(field) = 6) -func (q *PaginationQuery) And(condition string) { - q.Conditions = append(q.Conditions, Condition{Field: condition, Operator: "and"}) +func (q *PaginationQuery) And(condition string, args ...interface{}) { + q.Conditions = append(q.Conditions, Condition{Field: condition, Operator: "and", Args: args}) } // Group GROUP BY @@ -244,7 +245,8 @@ func (q *PaginationQuery) BuildRawWhere() (where string, args []interface{}) { sb.WriteString(fmt.Sprintf(" OR %s = ?", con.Field)) args = append(args, con.Arg) case "and": - sb.WriteString(fmt.Sprintf(" AND %s", con.Field)) // 自定义条件, 如: (length(field) = 4 OR length(field) = 6) + sb.WriteString(fmt.Sprintf(" AND (%s)", con.Field)) // 自定义条件, 如: (length(field) = 4 OR length(field) = 6) + args = append(args, con.Args...) case "group": sb.WriteString(fmt.Sprintf(" GROUP BY %s", con.Field))