Php 如何在操作员中使用Yii2REST web服务的GET请求
yii2restweb服务的文档解释说,我们可以通过GET-HTTP请求中通过URL传递的查询参数来过滤搜索到的集合 从文件: 另外,您可以像或那样对集合进行排序。筛选集合像或可以使用数据筛选器实现 我的问题是如何对IN条件使用查询参数 框架的数据过滤器类支持IN条件,但它不能像我这样工作。我试过这些: (返回空响应) (在“需要多个操作数”中返回错误消息“运算符”。)Php 如何在操作员中使用Yii2REST web服务的GET请求,php,yii2,Php,Yii2,yii2restweb服务的文档解释说,我们可以通过GET-HTTP请求中通过URL传递的查询参数来过滤搜索到的集合 从文件: 另外,您可以像或那样对集合进行排序。筛选集合像或可以使用数据筛选器实现 我的问题是如何对IN条件使用查询参数 框架的数据过滤器类支持IN条件,但它不能像我这样工作。我试过这些: (返回空响应) (在“需要多个操作数”中返回错误消息“运算符”。) …和其他方法都是相同的情况直到您发布代码,在其中实例化并加载数据过滤器,我不确定这是否对您有帮助 。。因此,根据您问题中的用例
…和其他方法都是相同的情况直到您发布代码,在其中实例化并加载数据过滤器,我不确定这是否对您有帮助 。。因此,根据您问题中的用例,我假设您正在使用
$dataFilter->load(Yii::$app->request->queryParams)
因此,如果希望正确计算查询参数,这应该是格式化查询参数的正确方法
?filter[id][in][]=1&filter[id][in][]=2&filter[id][in][]=3
根据文档中的这些示例和大家好,通过在GET中指定参数运算符,似乎无法使用in条件进行查询,因此解决方案如下:
http://localhost/api/v1/users?filter[id][]=1&filter[id][]=2&filter[id][]=3
因为我会将其转换为查询,请参见
注意:没有在URI中指定[in]运算符,否则它将不起作用Hi csminb,我尝试使用您的答案,但仍然不起作用。我认为在该模式下,在条件中使用筛选器查询参数不是正确的模式。您说过使用$dataFilter->load(Yii::$app->request->queryParams),我实际上并没有实现代码。我直接使用框架来构建条件我们可以只更新搜索模型,检查值是否为数组,然后使用“IN”操作符(?)您可以在UserController的公共函数actions()中添加代码吗?可能会有“searchModel”定义。用户控制器扩展了yii\rest\ActiveController,操作是它实现的默认操作。查看您使用的是哪个yii2版本?在最新版本中,您需要设置searchModel,查看searchModel@JannesBotis['class'=>'yii\data\ActiveDataFilter','searchModel'=>function(){return(新的动态模型(['id'=>null,'username'=>null,'email'=>null])->addRule('id','integer')->addRule(['username','email'],'string');},];