Skip to content
This repository was archived by the owner on Jan 4, 2020. It is now read-only.

Conversation

hainuo
Copy link
Contributor

@hainuo hainuo commented Jan 1, 2017

当使用_query 方式作为where条件时,parse_str 对小数点转换导致使用alias()方法
具体例子

'_query' => 'goodsCatId1=442&goodsCatId2=442&goodsCatId3=442&_logic=or',

当使用alias后

'_query' => 'g.goodsCatId1=442&g.goodsCatId2=442&g.goodsCatId3=442&_logic=or',

通过parse_str方法会被转换._

SELECT g.goodsId,g.goodsName,g.shopPrice,g.goodsThums,g.goodsUnit FROM tc_goods g WHERE g.goodsStatus = 1 AND g.goodsTag IN (0,1,2,3) AND g.brandId = 65 AND ( g_goodsCatId1 = '442' OR g_goodsCatId2 = '442' OR g_goodsCatId3 = '442' ) AND (  g.areaId1 = 370000 OR g.areaId2 = 370000 OR g.areaId3 = 370000 ) ORDER BY g.isAdminRecom DESC,g.createTime DESC LIMIT 0,2 

本次pr 在执行parse_str前对_query的值进行判断,如果其中有小数点,则使用 explode和foreach进行解析

当使用_query 方式作为where条件时,parse_str 对小数点转换导致使用alias()方法
具体例子
```
'_query' => 'goodsCatId1=442&goodsCatId2=442&goodsCatId3=442&_logic=or',
```
当使用alias后 
```
'_query' => 'g.goodsCatId1=442&g.goodsCatId2=442&g.goodsCatId3=442&_logic=or',
```
通过parse_str方法会被转换`.`为`_`
```
SELECT g.goodsId,g.goodsName,g.shopPrice,g.goodsThums,g.goodsUnit FROM tc_goods g WHERE g.goodsStatus = 1 AND g.goodsTag IN (0,1,2,3) AND g.brandId = 65 AND ( g_goodsCatId1 = '442' OR g_goodsCatId2 = '442' OR g_goodsCatId3 = '442' ) AND (  g.areaId1 = 370000 OR g.areaId2 = 370000 OR g.areaId3 = 370000 ) ORDER BY g.isAdminRecom DESC,g.createTime DESC LIMIT 0,2 
```
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant