2017-08-01 17 views
1
$searchModel = new CustomersSearch(); 
$dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

在Yii2的滤镜模式,默认情况下,我们提供有searchModel和索引动作的数据提供程序。但是,要定制返回的数据以符合特定标准,我会遇到一个挑战。这是我做过什么:Yii2:如何查询参数添加到索引操作的searchModel不影响gridview的

$searchModel = new CustomersSearch(); 
$dataProvider = $searchModel->search(Yii::$app->request->queryParams); 
$dataProvider->query->where('customers.status = 10'); 

这工作得很好,但问题是它与GridView控件这样的filterModel干扰,从所提供的搜索过滤器搜索什么都不由GridView控件返回的数据工作。有没有在哪里我可以添加条件的searchModel,而不会影响GridView中的filterModel?

回答

2

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

如果你想不重置查询条件以上,但只有提供给其追加使用andWhere像:

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

是的,你得到了我的问题的权利。我简直不敢相信这很简单。让我测试你的解决方案,看看它是如何发展的。谢谢。 – japheth

+1

太棒了。非常感谢。 – japheth

相关问题