Class yii\data\ActiveDataFilter

继承yii\data\ActiveDataFilter » yii\data\DataFilter » yii\base\Model » yii\base\Component » yii\base\BaseObject
实现ArrayAccess, IteratorAggregate, yii\base\Arrayable, yii\base\Configurable, yii\base\StaticInstanceInterface
Uses Traitsyii\base\ArrayableTrait, yii\base\StaticInstanceTrait
可用自版本2.0.13
源代码 https://github.com/yiisoft/yii2/blob/master/framework/data/ActiveDataFilter.php

ActiveDataFilter 允许以适合 yii\db\QueryInterface::where() 的格式构成过滤条件.

参见 yii\data\DataFilter.

公共属性

隐藏继承的属性

属性类型描述定义在
$activeValidators yii\validators\Validator[] 适用于当前 场景 的验证器. 该属性是只读的. yii\base\Model
$attributeMap array 搜索条件中要使用的实际属性名称, 格式为: [filterAttribute => actualAttribute]. yii\data\DataFilter
$attributes array 属性值(name => value). yii\base\Model
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$conditionBuilders array 映射过滤条件关键字以构建方法. yii\data\ActiveDataFilter
$conditionValidators array 将过滤条件关键字映射到验证方法. yii\data\DataFilter
$errorMessages array 错误消息格式为[errorKey => message]. 请注意, 此属性的类型在 getter 和 setter 中不同. 有关详细信息,请参见 getErrorMessages()setErrorMessages(). yii\data\DataFilter
$errors array 所有属性的错误数组. 结果是一个二维数组. 如果没有错误, 则返回空数组. 有关详细说明,请参阅 getErrors(). 该属性是只读的. yii\base\Model
$filter mixed 原始过滤器值. yii\data\DataFilter
$filterAttributeLabel string 通过 $filterAttributeName 指定的过滤器属性的标签. yii\data\DataFilter
$filterAttributeName string 处理过滤器值的属性的名称. yii\data\DataFilter
$filterControls array 可以在过滤器中使用的关键字或表达式. yii\data\DataFilter
$firstErrors array 第一个错误. 数组键是属性名称, 数组值是对应的错误消息. 如果没有错误, 将返回一个空数组. 该属性是只读的. yii\base\Model
$iterator ArrayIterator 用于遍历列表中项目的迭代器. 该属性是只读的. yii\base\Model
$multiValueOperators array 运算符关键字列表, 应该接受多个值. yii\data\DataFilter
$nullValue string 如果不能使用后者, 则表示为字符串"null"而不是文字的null. yii\data\DataFilter
$operatorTypes array 指定每个运算符支持的搜索属性类型列表. yii\data\DataFilter
$queryOperatorMap array 将过滤运算符映射到 yii\db\QueryInterface::where() 中使用的运算符. yii\data\ActiveDataFilter
$scenario string 此模型所在的场景. 默认为: SCENARIO_DEFAULT. yii\base\Model
$searchAttributeTypes array 搜索属性类型映射. 请注意, 此属性的类型在 getter 和 setter 中不同. 有关详细信息,请参见 getSearchAttributeTypes()setSearchAttributeTypes(). yii\data\DataFilter
$searchModel yii\base\Model 模型实例. 请注意, 此属性的类型在 getter 和 setter 中不同. 有关详细信息,请参见 getSearchModel()setSearchModel(). yii\data\DataFilter
$validators ArrayObject|yii\validators\Validator[] 所有在模型中声明的验证器. 该属性是只读的. yii\base\Model

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\BaseObject
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
activeAttributes() 返回在当前场景中需要验证的属性名称. yii\base\Model
addError() 向指定的属性添加新的错误. yii\base\Model
addErrors() 添加错误列表. yii\base\Model
afterValidate() 在验证结束后调用此方法. yii\base\Model
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
attributeHints() 返回属性提示列表. yii\base\Model
attributeLabels() 返回属性标签列表. yii\base\Model
attributes() 返回属性名称的列表. yii\base\Model
beforeValidate() 在验证开始之前调用此方法. yii\base\Model
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
build() 构建实际的过滤器规范表单 $filter 值. yii\data\DataFilter
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
clearErrors() 删除所有属性或单个属性的错误. yii\base\Model
createValidators() 根据 rules() 中指定的验证规则创建验证器对象. yii\base\Model
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
extraFields() 返回可以进一步扩展并由 toArray() 返回的字段列表. yii\base\ArrayableTrait
fields() 返回未指定任何特定字段时, 默认应由 toArray() 返回的字段列表. yii\base\ArrayableTrait
formName() 返回此模型类应使用的表单名称. yii\base\Model
generateAttributeLabel() 基于给定的属性名称生成用户友好的属性标签. yii\base\Model
getActiveValidators() 返回适用于当前 场景 的验证器. yii\base\Model
getAttributeHint() 返回指定属性的文本提示. yii\base\Model
getAttributeLabel() 返回指定属性的文本标签. yii\base\Model
getAttributes() 返回属性值. yii\base\Model
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getErrorMessages() yii\data\DataFilter
getErrorSummary() 将所有属性的错误作为一维数组返回. yii\base\Model
getErrors() 返回所有属性或单个属性的错误. yii\base\Model
getFilter() 返回原始过滤器值. yii\data\DataFilter
getFirstError() 返回指定属性的第一个错误. yii\base\Model
getFirstErrors() 返回模型中每个属性的第一个错误. yii\base\Model
getIterator() 返回用于遍历模型中属性的迭代器. yii\base\Model
getScenario() 返回此模型使用的场景. yii\base\Model
getSearchAttributeTypes() 返回搜索属性类型映射. yii\data\DataFilter
getSearchModel() 返回搜索模型实例. yii\data\DataFilter
getValidators() 返回在 rules() 中声明的所有验证器. yii\base\Model
hasErrors() 返回一个值, 指示是否存在任何验证错误. yii\base\Model
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化对象. yii\base\BaseObject
instance() 返回静态类实例, 该实例可用于获取元信息(meta). yii\base\StaticInstanceTrait
isAttributeActive() 返回一个值, 指示该属性在当前场景中是否处于活动状态. yii\base\Model
isAttributeRequired() 返回一个值, 指示该属性是否是必需的. yii\base\Model
isAttributeSafe() 返回一个值, 指示属性对于大规模分配是否安全. yii\base\Model
load() 用输入数据填充模型. yii\base\Model
loadMultiple() 使用来自最终用户的数据填充一组模型. yii\base\Model
normalize() 标准化滤波器值, 根据 $filterControls$attributeMap 替换原始键. yii\data\DataFilter
off() 从该组件分离现有的事件处理程序. yii\base\Component
offsetExists() 返回指定偏移量处是否有元素. yii\base\Model
offsetGet() 返回指定偏移量处的元素. yii\base\Model
offsetSet() 将元素设置为指定的偏移量. yii\base\Model
offsetUnset() 将指定偏移处的元素值设置为null. yii\base\Model
on() 将事件处理程序附加到事件. yii\base\Component
onUnsafeAttribute() 当大规模(批量)分配不安全属性时, 将调用此方法. yii\base\Model
rules() 返回属性的验证规则. yii\base\Model
safeAttributes() 返回在当前场景中可安全分配的属性名称. yii\base\Model
scenarios() 返回场景列表和相应的活动属性. yii\base\Model
setAttributes() 以大规模(批量)的方式设置属性值. yii\base\Model
setErrorMessages() 设置响应无效过滤器结构的错误消息列表, 格式为: [errorKey => message]. yii\data\DataFilter
setFilter() 设置原始过滤器值. yii\data\DataFilter
setScenario() 设置模型的场景. yii\base\Model
setSearchAttributeTypes() 设置搜索属性类型映射. yii\data\DataFilter
setSearchModel() 设置返回搜索模型实例. yii\data\DataFilter
toArray() 将模型转换为数组. yii\base\ArrayableTrait
trigger() 触发事件. yii\base\Component
validate() 执行数据验证. yii\base\Model
validateFilter() 验证过滤器属性值以匹配过滤条件条件规范. yii\data\DataFilter
validateMultiple() 验证多个模型. yii\base\Model

受保护的方法

隐藏继承的方法

方法描述定义在
buildAttributeCondition() 为特定属性构建搜索条件. yii\data\ActiveDataFilter
buildBlockCondition() 构建块条件, 它由单个条件组成. yii\data\ActiveDataFilter
buildCondition() yii\data\ActiveDataFilter
buildConjunctionCondition() 构建连接条件, 它由多个独立的条件组成. yii\data\ActiveDataFilter
buildInternal() 执行实际的过滤器构建. yii\data\ActiveDataFilter
buildOperatorCondition() 构建运算符条件. yii\data\ActiveDataFilter
defaultErrorMessages() 返回 $errorMessages 的默认值. yii\data\DataFilter
detectSearchAttributeType() 从给定的验证器中检测属性类型. yii\data\DataFilter
detectSearchAttributeTypes() 根据 $searchModel 验证规则为 $searchAttributeTypes 组成默认值. yii\data\DataFilter
extractFieldsFor() 从给定根字段的字段集合中提取嵌套字段. yii\base\ArrayableTrait
extractRootFields() 从嵌套字段中提取根字段名称. yii\base\ArrayableTrait
filterAttributeValue() 验证 $searchModel 范围内的属性值, 并应用属性值过滤器(如果有). yii\data\DataFilter
parseErrorMessage() 从消息键指定的 $errorMessages 解析消息的内容. yii\data\DataFilter
resolveFields() 确定 toArray() 可以返回哪些字段. yii\base\ArrayableTrait
validateAttributeCondition() 验证特定属性的搜索条件. yii\data\DataFilter
validateAttributeValue() 验证 model 范围内的属性值. yii\data\DataFilter
validateBlockCondition() 验证由单个条件组成的块条件. yii\data\DataFilter
validateCondition() 验证过滤条件. yii\data\DataFilter
validateConjunctionCondition() 建立由多个独立的条件组成的联合条件. yii\data\DataFilter
validateOperatorCondition() 验证运算符条件. yii\data\DataFilter

事件

隐藏继承的事件

事件类型描述定义在
EVENT_AFTER_VALIDATE yii\base\Event validate() 结尾处触发的事件. yii\base\Model
EVENT_BEFORE_VALIDATE yii\base\ModelEvent validate() 开始时触发的事件. yii\base\Model

常量

隐藏继承的常量

常量描述定义在
SCENARIO_DEFAULT 'default' 默认场景的名称. yii\base\Model
TYPE_ARRAY 'array' yii\data\DataFilter
TYPE_BOOLEAN 'boolean' yii\data\DataFilter
TYPE_DATE 'date' yii\data\DataFilter
TYPE_DATETIME 'datetime' yii\data\DataFilter
TYPE_FLOAT 'float' yii\data\DataFilter
TYPE_INTEGER 'integer' yii\data\DataFilter
TYPE_STRING 'string' yii\data\DataFilter
TYPE_TIME 'time' yii\data\DataFilter

属性详情

$conditionBuilders public 属性

映射过滤条件关键字以构建方法.

buildCondition() 使用这些方法来构建实际的过滤条件.

可以使用 PHP 回调指定特定条件的构建器. 例如:

[
    'XOR' => function (string $operator, mixed $condition) {
        //return array;
    },
    'LIKE' => function (string $operator, mixed $condition, string $attribute) {
        //return array;
    },
]
public array $conditionBuilders = ['AND' => 'buildConjunctionCondition''OR' => 'buildConjunctionCondition''NOT' => 'buildBlockCondition''<' => 'buildOperatorCondition''>' => 'buildOperatorCondition''<=' => 'buildOperatorCondition''>=' => 'buildOperatorCondition''=' => 'buildOperatorCondition''!=' => 'buildOperatorCondition''IN' => 'buildOperatorCondition''NOT IN' => 'buildOperatorCondition''LIKE' => 'buildOperatorCondition']
$queryOperatorMap public 属性

将过滤运算符映射到 yii\db\QueryInterface::where() 中使用的运算符.

格式为: [filterOperator => queryOperator].

如果特定的运算符关键字未出现在映射中, 将按原样使用.

通常, 映射可以留空, 因为过滤操作符名称与 yii\db\QueryInterface::where() 中使用的名称一致. 但是,在某些特殊情况下, 你可能需要对其进行调整. 例如, 在使用 PostgreSQL 时, 你可能需要设置以下映射:

[
    'LIKE' => 'ILIKE'
]

方法详情

buildAttributeCondition() protected 方法

为特定属性构建搜索条件.

protected array buildAttributeCondition ( $attribute, $condition )
$attribute string

搜索属性名称.

$condition mixed

搜索条件.

return array

实际条件.

buildBlockCondition() protected 方法

构建块条件, 它由单个条件组成.

它涵盖了诸如not之类的操作符.

protected array buildBlockCondition ( $operator, $condition )
$operator string

运算符关键字.

$condition mixed

源条件.

return array

实际条件.

buildCondition() protected 方法

protected array buildCondition ( $condition )
$condition array
return array

构建的条件.

buildConjunctionCondition() protected 方法

构建连接条件, 它由多个独立的条件组成.

它涵盖了诸如andor的操作符.

protected array buildConjunctionCondition ( $operator, $condition )
$operator string

运算符关键字.

$condition mixed

源条件.

return array

实际条件.

buildInternal() protected 方法

执行实际的过滤器构建.

默认情况下, 此方法返回 normalize() 的结果. 子类可以重写此方法, 以提供更具体的实现.

protected mixed buildInternal ( )
return mixed

构建实际的过滤器值.

buildOperatorCondition() protected 方法

构建运算符条件.

protected array buildOperatorCondition ( $operator, $condition, $attribute )
$operator string

运算符关键字.

$condition mixed

属性条件.

$attribute string

属性名称.

return array

实际条件.