过滤网格视图后Yii2导出

时间:2017-08-02 02:57:59

标签: php mysql sql yii yii2

这是我完成过滤后的网址。

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

1 个答案:

答案 0 :(得分:3)

1)get()getQueryParam()绝对应该有效(第一个基本上是第二个的别名) - 如果它不起作用你必须做错事。

2)使用andFilterWhere()代替andWhere() - 它的工作方式相同,但如果条件中的变量为空,则会被忽略。