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');

查看 whereandWhere 之间的差异。

如果您使用whereandWhere 不起作用。如果你想过滤多次使用 andWhere