【问题标题】:Yii2: How to add query params to searchModel of index action without affecting the filter model of the gridviewYii2:如何在不影响gridview的filter模型的情况下,给index action的searchModel添加查询参数
【发布时间】:2017-08-01 17:24:33
【问题描述】:
$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 model yii2 dataprovider


    【解决方案1】:

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

    如果您不想将查询条件重置为上面提供的条件,而只想附加它,请使用andWhere,例如:

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

    【讨论】:

    • 是的,我的问题是正确的。我不敢相信事情就这么简单。让我测试一下您的解决方案,看看效果如何。谢谢。
    【解决方案2】:

    查看whereandWhere 之间的差异。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      相关资源
      最近更新 更多