2017-08-02 6 views
1

Dies ist meine URL nachdem ich meine Filterung gemacht habe. Yii2 Export nach Filter Gridview

http://localhost/VMS/frontend/web/index.php?r=report%2Ffilter&ic_passport=&name=&unit_no=&category=4&purpose=

1) Ich habe versucht, den param innerhalb der URL

$category = Yii::$app->getRequest()->getQueryParam('category');

Yii::$app->request->getParam('category');

Yii::$app->request->get('category');

aber es hat nicht funktioniert zu bekommen. Alles was ich falsch gemacht habe?

2) Lassen Sie sich sagen, ich wollte Abfrage auf der URL tun basiert, so dass ich nur das Ergebnis exportieren kann, dass nur

`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(),` 

Basierend auf dem Filter URL-Filter ist, wird es Ergebnis kommen, die haben Kategorie 4. Aber wenn ich meine eigene erstellte Abfrage verwendet, wird es 0 Ergebnis herauskommen, weil das andere Attribut leer ist. Warum in der URL kann das Attribut leer gelassen werden und es funktioniert, aber in der Abfrage kann es nicht?

AKTUALISIERT LÖSUNG:

`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()` 

Nur ->andFilterWhere verwenden.

Antwort

3

1) get() und getQueryParam() sollte definitiv funktionieren (das erste ist im Grunde Alias ​​für die zweite) - wenn es nicht funktioniert, müssen Sie etwas falsch machen.

2) Verwenden Sie andFilterWhere() anstelle von andWhere() - es funktioniert auf die gleiche Weise, aber wenn Variable in Bedingung leer ist, wird es ignoriert.

+0

yaya danke. Ich habe es gerade auch herausgefunden. – ron