Yii2:如何对不属于其模型的GridView列进行排序

时间:2017-12-14 13:47:30

标签: php sorting gridview yii2 gii

我在名为假期的表格中使用Gii制作了一个模型及其CRUD。它的index.php有一个GridView,有两列名为第1列第3列。然后我添加了一个名为的列,该列来自名为的表。

GridView

问题是列不可排序。

所以我有这些表格( column1_id person_id 是其表格的主键):

vacations: column1_id, column3.
persons: person_id, person_name, column1_id.

也许我必须在VacationsSearch文件中添加一些内容。

1 个答案:

答案 0 :(得分:1)

基本上你应该扩展搜索功能,以便为相关列添加查询和排序

   $dataProvider->setSort([
       .....
          'your_related_column' => [
              'asc' => ['related_table.your_related_column' => SORT_ASC],
              'desc' => ['related_table.your_related_column' => SORT_DESC],
              'label' => 'Your Label'
          ]
      ]
  ]);

   .....

  // filter by country name
  $query->joinWith(['yor_relation' => function ($q) {
      $q->where('related_table.your_related_column LIKE "%' . $this->yourRelatedAttribute . '%"');
  }]);

要获得更广泛的解释,您可以看到此示例的方案2 http://www.yiiframework.com/wiki/621/filter-sort-by-calculated-related-fields-in-gridview-yii-2-0/