Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2在FilterWhere条件下传递数组_Yii2_Yii2 Basic App_Yii2 Model - Fatal编程技术网

Yii2在FilterWhere条件下传递数组

Yii2在FilterWhere条件下传递数组,yii2,yii2-basic-app,yii2-model,Yii2,Yii2 Basic App,Yii2 Model,我正在尝试传递筛选器where条件中的数组元素 getFacilityID函数 这里我使用getFacilityID函数进行过滤 问题是如果我有超过1个设施,它不会显示任何区域 ->andFilterWhere['like','facility_id',$this->getfacilityID] 粗体代码导致了问题,如果getfacilityId包含多个数组元素,则不会在区域中显示数据。如果getFacilityId中只有一个元素,它将正确显示数据。我能得到这个问题的解决方案吗 提前感谢。如托弗

我正在尝试传递筛选器where条件中的数组元素

getFacilityID函数

这里我使用getFacilityID函数进行过滤

问题是如果我有超过1个设施,它不会显示任何区域

->andFilterWhere['like','facility_id',$this->getfacilityID]

粗体代码导致了问题,如果getfacilityId包含多个数组元素,则不会在区域中显示数据。如果getFacilityId中只有一个元素,它将正确显示数据。我能得到这个问题的解决方案吗

提前感谢。

如托弗所述,不能将数组与like一起使用。因此,将查询更改为在条件中有效

 $query->orFilterWhere(['like', 'area_name', $this->area_name])     
        ->andFilterWhere(['in', 'facility_id', $this->getFacilityID()]);
阅读更多信息:

如托弗所述,不能将数组与like一起使用。因此,将查询更改为在条件中有效

 $query->orFilterWhere(['like', 'area_name', $this->area_name])     
        ->andFilterWhere(['in', 'facility_id', $this->getFacilityID()]);
阅读更多信息:

尝试以下代码:

        if(null != $this->getFacilityID())
            foreach ($this->getfacilityID() as $key => $id) {
                $query->orFilterWhere(['like', 'facility_id', $id]);
            }
        $query->andFilterWhere(['like', 'area_name', $this->area_name]);
        $query->all();
这是我的例子

        foreach (['a1','b1'] as $key => $value) {
            $q->orFilterWhere(['like', 'username', $value]);
        }
        $q->andFilterWhere(['like', 'email', 'someEmail']);
        $q->all();
查询结果为:

请尝试以下代码:

        if(null != $this->getFacilityID())
            foreach ($this->getfacilityID() as $key => $id) {
                $query->orFilterWhere(['like', 'facility_id', $id]);
            }
        $query->andFilterWhere(['like', 'area_name', $this->area_name]);
        $query->all();
这是我的例子

        foreach (['a1','b1'] as $key => $value) {
            $q->orFilterWhere(['like', 'username', $value]);
        }
        $q->andFilterWhere(['like', 'email', 'someEmail']);
        $q->all();
查询结果为:


可能重复的你不能使用像数组,因此可能重复。谢谢老兄。。。解决了!!!可能重复的你不能使用像数组,因此可能重复。谢谢老兄。。。解决了!!!你能把你的例子解释清楚吗?这将很有帮助,非常感谢。@MohanPrasad查看最后一节的结果sql查询,如果它是您要查找的内容,请忽略不同的列名称,然后从答案中抓取第一个代码部分,并自行测试,效果非常好!!!!因此,使用foreach可以循环元素并将其传递到类似的条件!!但当我没有创建设施时,它破坏了代码。但无论如何,我有另一个解决办法。非常感谢@MohanPrasad当然会中断,通常您应该检查getfacilityID是否为空,并跳过此操作logic@in你能把你的例子解释清楚吗?这将很有帮助,非常感谢。@MohanPrasad查看最后一节的结果sql查询,如果它是您要查找的内容,请忽略不同的列名称,然后从答案中抓取第一个代码部分,并自行测试,效果非常好!!!!因此,使用foreach可以循环元素并将其传递到类似的条件!!但当我没有创建设施时,它破坏了代码。但无论如何,我有另一个解决办法。非常感谢@MohanPrasad当然会中断,通常您应该检查getfacilityID是否为空,并跳过此操作logic@in我的路还是别的?