这是我完成过滤后的网址。
http://localhost/VMS/frontend/web/index.php?r=report%2Ffilter&ic_passport=&name=&unit_no=&category=4&purpose=
1)我试图在URL中找到参数
$category = Yii::$app->getRequest()->getQueryParam('category');
Yii::$app->request->getParam('category');
Yii::$app->request->get('category');
但它不起作用。我做错了什么?
2)假设我想根据URL进行查询,以便我只能导出仅过滤的结果
`Table1::find()
->andwhere(['category_id'=>$category])
->andWhere(['visitor_name'=>$visitor_name])
->andWhere(['ic'=>$ic_passport])
->andWhere(['unit_no'=>$unit_no])
->andWhere(['purpose_id'=>$purpose])
->all(),`
基于过滤器url,它将出现具有类别4的结果。但是当我使用我自己创建的查询时,它将出现0结果,因为其他属性为空。为什么在url中属性可以留空并且它可以工作,但在查询中它不能?
更新的解决方案:
`Table1::find()
->andFilterwhere(['category_id'=>$category])
->andFilterWhere(['visitor_name'=>$visitor_name])
->andFilterWhere(['ic'=>$ic_passport])
->andFilterWhere(['unit_no'=>$unit_no])
->andFilterWhere(['purpose_id'=>$purpose])
->all()`
只需使用->andFilterWhere
。
答案 0 :(得分:3)
1)get()
和getQueryParam()
绝对应该有效(第一个基本上是第二个的别名) - 如果它不起作用你必须做错事。
2)使用andFilterWhere()
代替andWhere()
- 它的工作方式相同,但如果条件中的变量为空,则会被忽略。