Yii2 REST Web服务的文档说明我们可以通过GET HTTP请求中通过URL传递的查询参数来过滤搜索到的集合。
来自doc: "另外,您可以对http://localhost/users?sort=email或http://localhost/users?sort=-email等集合进行排序。可以使用数据过滤器"
实施过滤馆,例如http://localhost/users?filter[id]=10或http://localhost/users?filter[email][like]=gmail.com我的问题是如何在IN条件下使用查询参数?
框架的数据过滤器类支持IN条件,但它不能正常工作。我试过这些:
http://localhost/api/v1/users?filter[id][in][]=1,2,3(返回空回复) http://localhost/api/v1/users?filter[id][in]=[1,2,3](返回错误消息'运营商"在"需要多个操作数。')
......和其他方式相同的情况
答案 0 :(得分:1)
直到您发布实例化并加载DataFilter的代码,我不确定这是否对您有所帮助。
..所以,基于你问题中的用例,我假设你正在使用
$dataFilter->load(Yii::$app->request->queryParams)
因此,如果您希望它们进行核心评估,这应该是使查询参数化的正确方法
?filter[id][in][]=1&filter[id][in][]=2&filter[id][in][]=3
中的这些示例
答案 1 :(得分:0)
嗨,大家好像通过在GET中指定参数运算符,无法使用IN条件进行查询,因此解决方案就是这样:
http://localhost/api/v1/users?filter[id][]=1&filter[id][]=2&filter[id][]=3
Becouse Yii会将其转换为IN查询,请参阅 example
N.B。:不指定URI中的[in]运算符,否则无效