mirror of
https://github.com/tobycroft/gorose-pro.git
synced 2025-09-26 20:51:27 +08:00
新增SubWhere
This commit is contained in:
@@ -452,10 +452,12 @@ func (b *BuilderDefault) parseWhere(ormApi IOrm) (string, error) {
|
||||
paramsLength := len(params)
|
||||
|
||||
switch paramsLength {
|
||||
case 5: //四个参数{subquery}
|
||||
fmt.Println(5, "new")
|
||||
fmt.Println(params)
|
||||
return "", errors.New("test")
|
||||
case 4: //SubWhere专用4+1参数
|
||||
res, err := b.parseParams(params, ormApi)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
where = append(where, condition+" "+res)
|
||||
case 3: // 常规3个参数: {"id",">",1}
|
||||
res, err := b.parseParams(params, ormApi)
|
||||
if err != nil {
|
||||
@@ -605,6 +607,30 @@ func (b *BuilderDefault) parseParams(args []interface{}, ormApi IOrm) (s string,
|
||||
var paramsToArr []string
|
||||
|
||||
switch paramsLength {
|
||||
case 4: //SubWhere专用4+1参数
|
||||
if !inArray(argsReal[1], b.GetOperator()) {
|
||||
err = errors.New("where parameter is wrong")
|
||||
b.IOrm.GetISession().GetIEngin().GetLogger().Error(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
//paramsToArr = append(paramsToArr, argsReal[0].(string))
|
||||
paramsToArr = append(paramsToArr, b.current.AddFieldQuotes(argsReal[0].(string)))
|
||||
paramsToArr = append(paramsToArr, argsReal[1].(string))
|
||||
|
||||
switch strings.Trim(strings.ToLower(t.New(argsReal[1]).String()), " ") {
|
||||
//case "like", "not like":
|
||||
// paramsToArr = append(paramsToArr, b.GetPlaceholder())
|
||||
// b.SetBindValues(argsReal[2])
|
||||
case "in", "not in":
|
||||
paramsToArr = append(paramsToArr, "("+argsReal[2].(string)+")")
|
||||
paramsToArr = append(paramsToArr, b.GetPlaceholder())
|
||||
b.SetBindValues(argsReal[3])
|
||||
|
||||
default:
|
||||
paramsToArr = append(paramsToArr, b.GetPlaceholder())
|
||||
b.SetBindValues(argsReal[3])
|
||||
}
|
||||
case 3: // 常规3个参数: {"id",">",1}
|
||||
//if !inArray(argsReal[1], b.GetRegex()) {
|
||||
if !inArray(argsReal[1], b.GetOperator()) {
|
||||
|
4
orm.go
4
orm.go
@@ -177,8 +177,8 @@ func (dba *Orm) Page(page int) IOrm {
|
||||
}
|
||||
|
||||
// Where : query or execute where condition, the relation is and
|
||||
func (dba *Orm) SubWhere(field, condition, alias, sql string, args []interface{}) IOrm {
|
||||
dba.Where(field, condition, alias, sql, args)
|
||||
func (dba *Orm) SubWhere(field, condition, sql string, args []interface{}) IOrm {
|
||||
dba.Where(field, condition, "("+sql+")", args)
|
||||
return dba
|
||||
}
|
||||
|
||||
|
@@ -11,7 +11,7 @@ type IOrm interface {
|
||||
BuildSql(operType ...string) (string, []interface{}, error)
|
||||
Table(tab interface{}) IOrm
|
||||
SubQuery(sql, alias string, args []interface{}) IOrm
|
||||
SubWhere(field, condition, alias, sql string, args []interface{}) IOrm
|
||||
SubWhere(field, condition, sql string, args []interface{}) IOrm
|
||||
// fields=select
|
||||
Fields(fields ...string) IOrm
|
||||
AddFields(fields ...string) IOrm
|
||||
|
Reference in New Issue
Block a user