codiverum/yii2-relation-search-filter

一个简单的扩展,用于简化通过相关字段进行搜索和过滤。

安装: 420

依赖: 0

建议者: 0

安全: 0

星标: 5

关注者: 2

分支: 3

开放问题: 1

类型:yii2-extension

1.0.7 2015-10-20 08:03 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:52:49 UTC


README

一个简单的扩展,用于简化通过相关字段进行搜索和过滤。

使用此特性可以轻松添加显示/过滤相关实体属性的功能。它还允许使用表别名。扩展非常简单,但可以使代码更整洁,尤其是在使用别名时(一些IDE中存在一些自动格式化错误)。

安装

安装此扩展的首选方式是通过 composer

运行以下命令:

php composer.phar require --prefer-dist codiverum/yii2-relation-search-filter "*"

或者将以下内容添加到您的 composer.json 文件的 require 部分中:

"codiverum/yii2-relation-search-filter": "*"

使用

用法

要使用此特性,您需要进行以下操作(以下示例未使用别名):

  1. 在您的类(搜索模型)主体顶部添加以下内容:
use \codiverum\relationSF\RelationSFTrait; 
  1. 在您的类中创建新的公共属性
public $relation_name;
  1. 将您的属性添加到安全属性中
  2. 在您的搜索函数中添加以下内容:
  • 在创建 $query 后添加以下内容:
$this->joinWithRelation($query, 'relation_name');
  • 在创建 $dataProvider 后添加以下内容:
$this->addRelationSort($dataProvider, 'relation_name', 'related_table_field_name', 'table_name');
  • 在创建查询过滤器后添加以下内容:
$this->addRelationFilter($query, 'relation_name', 'related_table_field_name', 'table_name');
  1. 将以下内容添加到 GridView 列表数组中
[
  'attribute' => 'relation_name',
  'value' => 'relation_name.related_table_field_name',
],

完成。

高级用法(使用表别名)

  1. 在您的类(搜索模型)主体顶部添加以下内容:
use \codiverum\relationSF\RelationSFTrait; 
  1. 在您的类中创建新的公共属性
public $relation_name;
  1. 将您的属性添加到安全属性中
  2. 在您的搜索函数中添加以下内容:
  • 在创建 $query 后添加以下内容:
$this->joinWithRelation($query, 'relation_name', 'table_name', 'alias');
  • 在创建 $dataProvider 后添加以下内容:
$this->addRelationSort($dataProvider, 'relation_name', 'related_table_field_name', 'alias');
  • 在创建查询过滤器后添加以下内容:
$this->addRelationFilter($query, 'relation_name', 'related_table_field_name', 'alias');
  1. 将以下内容添加到 GridView 列表数组中
[
  'attribute' => 'relation_name',
  'value' => 'relation_name.related_table_field_name',
],

That's it.