-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
是否支持不同字段的or #107
Comments
@wang1784594241 你的评论怎么不见了?我在通知里还看到这个: |
像上面那个例子,不考虑 id 为主键的话,可以 {
"Table": { //具体的表名
"name": "xxx",
"id": 1,
"status": "normal",
"@combine": "name | id" //或者 "|name,|id",或者 "|name,|id,&status",其中 | 可省略
}
} 如果 id 是主键,那就不允许和别的字段 OR 了,防止绕过自动化权限控制。 {
"User[]": { //查询一个数组,并提取里面的 User
"User": {
"name~": "a", //名称中包含 a
"tag~": "a", //标签中包含 a
"@combine": "name~ | tag~" //两个条件 OR 连接
}
}
} 还可以加上性别为女这个条件: {
"User[]": { //查询一个数组,并提取里面的 User
"User": {
"sex": 1, //性别为女
"name~": "a", //名称中包含 a
"tag~": "a", //标签中包含 a
"@combine": "name~ | tag~" //两个条件 OR 连接
}
}
} 可以加上性能分析关键词 {
"User[]": { //查询一个数组,并提取里面的 User
"User": {
"sex": 1, //性别为女
"name~": "a", //名称中包含 a
"tag~": "a", //标签中包含 a
"@combine": "name~ | tag~" //两个条件 OR 连接
}
},
"@explain": true
} 就能直接在 Response 里看到 APIJSON ORM 自动生成的 SQL 语句是: SELECT * FROM `sys`.`apijson_user` WHERE ( (`sex` = 1) ) AND ( (`name` REGEXP BINARY 'a') OR (`tag` REGEXP BINARY 'a') ) LIMIT 10 OFFSET 0 PostgreSQL( "@database": "POSTGRESQL" ): SELECT * FROM "sys"."apijson_user" WHERE ( ("sex" = 1) ) AND ( ("name" ~ 'a') OR ("tag" ~ 'a') ) LIMIT 10 OFFSET 0 |
感谢,原来文档里也有,只是没这么详细,之前没看明白,这下理解了。 |
我在 uliweb-apijson里不支持 @combine ,而是另外支持 @expr 这样一个更灵活的格式,可以支持比较复杂的表达,供参考,例子:
|
这种同一个字段要多次用的呢 |
@martin-1120 "@combine":"age | (age> & status)", // 任意与或非条件组合 |
如果我想这样呢,会报错 ***@***.***":"age> | (age> & status)", // 任意与或非条件组合
"age>"20,
"status":1
报错的意思是:数量不匹配 字段有两个 combine有三个
发自我的iPhone
…------------------ 原始邮件 ------------------
发件人: TommyLemon ***@***.***>
发送时间: 2023年12月17日 13:07
收件人: Tencent/APIJSON ***@***.***>
抄送: 小云 ***@***.***>, Mention ***@***.***>
主题: Re: [Tencent/APIJSON] 是否支持不同字段的or (#107)
这种同一个字段要多次用的呢 ( age = 10 ) or ( age > 20 and status =1 )
@martin-1120
***@***.***":"age | (age> & status)", // 任意与或非条件组合
"age":10,
"age>"20,
"status":1
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
@martin-1120 你直接在 GitHub 上回复,不要用邮箱回复,现在代码有不少乱码,很难看 |
@TommyLemon 二: 二 我试过会报错 : |
DemoSQLConfig 重写 getMaxCombineRatio ,return 0 |
@TommyLemon 第一种呢 |
一样。 |
@TommyLemon 就是重名怎办呢,比如有三个重名?没办法了吗 |
建议是不是能像这样用冒号增加别名, 这样就很完善了 |
还可以 你举的例子几乎不会实际出现在业务中,一般一个字段最多同时传两个条件,大部分需求一次请求每个字段都只有一个条件,不同的字段各一个条件组合起来,不存在冲突。 真要出现这么极端的情况,可以用 @raw 原始 SQL 片段 |
例子里是一个字段的or ,但有时需要 (name='xxx' or id=1 ) and status=‘normal’ 这种sql,是否支持呢
The text was updated successfully, but these errors were encountered: