Yii2:如何在不影响 gridview 的过滤器模型的情况下将查询参数添加到索引操作的 searchModel
Yii2: How to add query params to searchModel of index action without affecting the filter model of the gridview
$searchModel = new CustomersSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
在 Yii2 中,默认情况下,我们为 Index 操作提供了一个 searchModel 和一个 dataProvider。但是,要自定义返回的数据以使其符合特定标准,我遇到了挑战。这就是我所做的:
$searchModel = new CustomersSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->query->where('customers.status = 10');
这工作正常,但问题是它干扰了 GridView 的 filterModel,因此从提供的搜索过滤器中搜索任何内容都无法处理 GridView 返回的数据。是否可以在不影响 GridView 中的 filterModel 的情况下向 searchModel 添加条件?
如果我理解正确的话,您希望允许用户使用 GridView 过滤器,但将他们得到的结果限制为符合 customers.status = 10
条件的结果。是吗?
如果您不想将查询条件重置为上面提供的条件,而只想追加它,请使用 andWhere
,例如:
$dataProvider->query->andWhere('customers.status = 10');
查看 where
和 andWhere
之间的差异。
如果您使用where
,andWhere
不起作用。如果你想过滤多次使用 andWhere
$searchModel = new CustomersSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
在 Yii2 中,默认情况下,我们为 Index 操作提供了一个 searchModel 和一个 dataProvider。但是,要自定义返回的数据以使其符合特定标准,我遇到了挑战。这就是我所做的:
$searchModel = new CustomersSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->query->where('customers.status = 10');
这工作正常,但问题是它干扰了 GridView 的 filterModel,因此从提供的搜索过滤器中搜索任何内容都无法处理 GridView 返回的数据。是否可以在不影响 GridView 中的 filterModel 的情况下向 searchModel 添加条件?
如果我理解正确的话,您希望允许用户使用 GridView 过滤器,但将他们得到的结果限制为符合 customers.status = 10
条件的结果。是吗?
如果您不想将查询条件重置为上面提供的条件,而只想追加它,请使用 andWhere
,例如:
$dataProvider->query->andWhere('customers.status = 10');
查看 where
和 andWhere
之间的差异。
如果您使用where
,andWhere
不起作用。如果你想过滤多次使用 andWhere