Yii2:如何在不影响gridview的过滤器模型的情况下将查询参数添加到索引操作的searchModel

时间:2017-08-01 17:24:34

标签: gridview model yii2 dataprovider

 function _remap($method,$args)
{
    if (method_exists($this, $method)) {
        /**
         * Call the method
         */
        $this->$method($args);
    }else {
        /**
         * Otherwise pass $method to index() as an argument
         */
        $this->index($method,$args);
    }
}    

在Yii2中,默认情况下,我们为Index操作提供了searchModel和dataProvider。但是,要自定义返回的数据以使其符合特定条件,我会遇到挑战。这就是我所做的:

$searchModel = new CustomersSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);

这很好但问题是它干扰了GridView的filterModel,这样从提供的搜索过滤器中搜索任何东西都不能对GridView返回的数据起作用。我是否可以在不影响GridView中的filterModel的情况下向searchModel添加条件?

2 个答案:

答案 0 :(得分:6)

如果我理解正确,您希望允许用户使用GridView过滤器,但要限制他们获得的匹配customers.status = 10条件的结果。是吗?

如果您不想将查询条件重置为上面提供的但只是为了追加它,请使用andWhere,如:

$dataProvider->query->andWhere('customers.status = 10');

答案 1 :(得分:0)

看到whereandWhere之间的区别。

如果您使用where,则andWhere不起作用。如果您想过滤多个时间,请使用andWhere