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)
|
paramsLength := len(params)
|
||||||
|
|
||||||
switch paramsLength {
|
switch paramsLength {
|
||||||
case 5: //四个参数{subquery}
|
case 4: //SubWhere专用4+1参数
|
||||||
fmt.Println(5, "new")
|
res, err := b.parseParams(params, ormApi)
|
||||||
fmt.Println(params)
|
if err != nil {
|
||||||
return "", errors.New("test")
|
return res, err
|
||||||
|
}
|
||||||
|
where = append(where, condition+" "+res)
|
||||||
case 3: // 常规3个参数: {"id",">",1}
|
case 3: // 常规3个参数: {"id",">",1}
|
||||||
res, err := b.parseParams(params, ormApi)
|
res, err := b.parseParams(params, ormApi)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -605,6 +607,30 @@ func (b *BuilderDefault) parseParams(args []interface{}, ormApi IOrm) (s string,
|
|||||||
var paramsToArr []string
|
var paramsToArr []string
|
||||||
|
|
||||||
switch paramsLength {
|
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}
|
case 3: // 常规3个参数: {"id",">",1}
|
||||||
//if !inArray(argsReal[1], b.GetRegex()) {
|
//if !inArray(argsReal[1], b.GetRegex()) {
|
||||||
if !inArray(argsReal[1], b.GetOperator()) {
|
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
|
// Where : query or execute where condition, the relation is and
|
||||||
func (dba *Orm) SubWhere(field, condition, alias, sql string, args []interface{}) IOrm {
|
func (dba *Orm) SubWhere(field, condition, sql string, args []interface{}) IOrm {
|
||||||
dba.Where(field, condition, alias, sql, args)
|
dba.Where(field, condition, "("+sql+")", args)
|
||||||
return dba
|
return dba
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -11,7 +11,7 @@ type IOrm interface {
|
|||||||
BuildSql(operType ...string) (string, []interface{}, error)
|
BuildSql(operType ...string) (string, []interface{}, error)
|
||||||
Table(tab interface{}) IOrm
|
Table(tab interface{}) IOrm
|
||||||
SubQuery(sql, alias string, args []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=select
|
||||||
Fields(fields ...string) IOrm
|
Fields(fields ...string) IOrm
|
||||||
AddFields(fields ...string) IOrm
|
AddFields(fields ...string) IOrm
|
||||||
|
Reference in New Issue
Block a user