Class yii\validators\UniqueValidator

继承yii\validators\UniqueValidator » yii\validators\Validator » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/validators/UniqueValidator.php

UniqueValidator 验证属性值在指定的数据库表中是唯一的.

UniqueValidator 检查被验证的值在 ActiveRecord 类 $targetClass 和属性 $targetAttribute 指定的表列中是否是唯一的.

以下是使用此验证器的验证规则的示例:

// a1 是唯一的
['a1', 'unique']
// a1 是唯一的, 但是列 a2 将用于检查 a1 值的唯一性
['a1', 'unique', 'targetAttribute' => 'a2']
// a1 和 a2 是唯一的, 它们都会收到错误消息
[['a1', 'a2'], 'unique', 'targetAttribute' => ['a1', 'a2']]
// a1 和 a2 是唯一的, 只有 a1 会收到错误消息
['a1', 'unique', 'targetAttribute' => ['a1', 'a2']]
// a1 是唯一的, 通过检查 a2 和 a3(使用 a1 值)的唯一性
['a1', 'unique', 'targetAttribute' => ['a2', 'a1' => 'a3']]

公共属性

隐藏继承的属性

属性类型描述定义在
$attributeNames array 属性名称. 该属性是只读的. yii\validators\Validator
$attributes array|string 要由此验证器验证的属性. yii\validators\Validator
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$builtInValidators array 内置验证器列表(键值对(name => class)或配置). yii\validators\Validator
$comboNotUnique string yii\validators\UniqueValidator
$enableClientValidation boolean 是否为此验证器启用客户端验证. yii\validators\Validator
$except array|string 验证器不应该应用的场景. yii\validators\Validator
$filter string|array|Closure 要应用于 DB 查询的附加过滤器, 用于检查属性值的唯一性. yii\validators\UniqueValidator
$forceMasterDb boolean 是否强制此验证器始终使用主数据库. yii\validators\UniqueValidator
$isEmpty callable PHP 回调函数, 它取代 isEmpty() 的默认实现. yii\validators\Validator
$message string 用户定义的错误消息. yii\validators\UniqueValidator
$on array|string 验证器可以应用的场景. yii\validators\Validator
$skipOnEmpty boolean 如果属性值为null或空字符串, 是否应跳过此验证规则. yii\validators\Validator
$skipOnError boolean 如果验证的属性已根据某些先前的规则已经存在某些验证错误, 是否应跳过此验证规则. yii\validators\Validator
$targetAttribute string|array 应该用于验证当前属性值的唯一性的 ActiveRecord 属性的名称. yii\validators\UniqueValidator
$targetAttributeJunction string And|or 定义目标属性的关联方式. yii\validators\UniqueValidator
$targetClass string 应该用于验证当前属性值的唯一性的 ActiveRecord 类的名称. yii\validators\UniqueValidator
$validationAttributes array 属性名称列表. 该属性是只读的. yii\validators\Validator
$when callable PHP 回调函数, 其返回值确定是否应该应用此验证器. yii\validators\Validator
$whenClient string 一个 JavaScript 函数名, 其返回值决定是否应在客户端应用此验证器. yii\validators\Validator

公共方法

隐藏继承的方法

方法描述定义在
__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
addError() 将有关指定属性的错误添加到模型对象. yii\validators\Validator
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
clientValidateAttribute() 返回执行客户端验证所需的 JavaScript. yii\validators\Validator
createValidator() 创建一个验证器对象. yii\validators\Validator
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
getAttributeNames() 返回清理后的属性名称, 开头不带!字符. yii\validators\Validator
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getClientOptions() 返回客户端验证选项. yii\validators\Validator
getValidationAttributes() 返回此验证器适用的属性列表. yii\validators\Validator
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化对象. yii\validators\UniqueValidator
isActive() 返回一个值, 该值指示验证器对于给定场景和属性是否处于活动状态. yii\validators\Validator
isEmpty() 检查给定值是否为空. yii\validators\Validator
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
trigger() 触发事件. yii\base\Component
validate() 验证给定的值. yii\validators\Validator
validateAttribute() 验证单个属性. yii\validators\UniqueValidator
validateAttributes() 验证指定的对象. yii\validators\Validator

受保护的方法

隐藏继承的方法

方法描述定义在
formatMessage() 使用 I18N 格式化消息, 或者当\Yii::$app不可用时使用简单的strtr函数. yii\validators\Validator
validateValue() 验证一个值. yii\validators\Validator

属性详情

$comboNotUnique public 属性 (可用自版本: 2.0.9)
弃用 自版本 2.0.10 起可用, 将在 2.1 中删除. 使用 $message 属性为多个目标属性设置自定义消息.
public string $comboNotUnique null
$filter public 属性

要应用于 DB 查询的附加过滤器, 用于检查属性值的唯一性.

这可以是表示附加查询条件的字符串或数组(请参阅 yii\db\Query::where()), 或带有签名function ($query)的匿名函数, 其中$query是你可以在函数中修改的 Query 对象.

public string|array|Closure $filter null
$forceMasterDb public 属性 (可用自版本: 2.0.14)

是否强制此验证器始终使用主数据库.

public boolean $forceMasterDb true
$message public 属性

用户定义的错误消息.

验证单个属性时, 它可能包含以下占位符, 将由验证器进行相应的替换:

  • {attribute}: 要验证的属性的标签.
  • {value}: 被验证的属性的值.

验证多个属性时, 它可能包含以下占位符:

  • {attributes}: 要验证的属性的标签的列表.
  • {values}: 被验证的属性的值的列表.
public string $message null
$targetAttribute public 属性

应该用于验证当前属性值的唯一性的 ActiveRecord 属性的名称.

如果未设置, 它将使用当前正在验证的属性的名称.

你可以使用数组同时验证多个列的唯一性. 数组值是将用于验证唯一性的属性, 而数组键是要验证其值的属性.

$targetAttributeJunction public 属性 (可用自版本: 2.0.11)

And|or 定义目标属性的关联方式.

$targetClass public 属性

应该用于验证当前属性值的唯一性的 ActiveRecord 类的名称.

如果未设置, 它将使用正在验证的属性的 ActiveRecord 类.

参见 $targetAttribute.

public string $targetClass null

方法详情

init() public 方法

初始化对象.

在使用给定的配置初始化对象之后, 在构造函数的末尾调用此方法.

public void init ( )
validateAttribute() public 方法

验证单个属性.

子类必须实现此方法才能提供实际的验证逻辑.

public void validateAttribute ( $model, $attribute )
$model yii\base\Model

要验证的数据模型.

$attribute string

要验证的属性的名称.