在GridView Yii2中过滤索引视图上的结果

时间:2014-09-29 08:58:58

标签: php sql yii2

我有一套'客户'它们显示在GridView中。 '客户'普通用户无法删除,只标记为删除。但是我希望它一旦被标记为删除就不会显示在列表中。

我使用的是Yii2,软删除表包含三列涉及数据的字段' foreign_table',' foreign_column'和' foreign_value'。它的设置是这样的,因为我不想删除“客户端”中的数据。表除非需要。

我如何过滤GridView的结果?

我会使用$ model->搜索吗?

2 个答案:

答案 0 :(得分:1)

我相信您可以使用$model->search来过滤结果,前提是已完成以下步骤:

  1. 您可以标记标记为删除的行:statestatus
  2. search()代表的模型的$model方法中,您可以使用$criteria->condition = 'status=1 OR status=2';指定用于过滤结果的条件。
  3. 根据您的数据库以及您决定标记或标记为已删除的方式,您可能需要修改$criteria。您甚至可以选择使用$criteria->with来包含外表。

答案 1 :(得分:0)

因此,您有一个表格,用于保存对应被视为已删除的项目的引用。

我认为覆盖Client类的find()是合理的,因为在许多情况下你可能想要忽略标记为已删除的客户端。如果是这样,你可以在find()中编写适当的查询。作为一个很好的副作用,GridView将自动仅显示未标记为已删除的客户端。

要获取标记为已删除的客户端,您需要一个额外的方法,当然,如果需要的话(您可能希望直接在数据库中删除它们而且您不需要PHP代码这个)。但大多数时候你并不需要它们。所以你可以通过覆盖find方法来过滤它们。