public function validateAttribute($model, $attribute)
{
$targetAttribute = $this->targetAttribute === null ? $attribute : $this->targetAttribute;
if (is_array($targetAttribute)) {
if ($this->allowArray) {
throw new InvalidConfigException('The "targetAttribute" property must be configured as a string.');
}
$params = [];
foreach ($targetAttribute as $k => $v) {
$params[$v] = is_int($k) ? $model->{$v} : $model->{$k};
}
} else {
$params = [$targetAttribute => $model->{$attribute}];
}
if (!$this->allowArray) {
foreach ($params as $value) {
if (is_array($value)) {
$this->addError($model, $attribute, Yii::t('yii', '{attribute} is invalid.'));
return;
}
}
}
$targetClass = $this->targetClass === null ? get_class($model) : $this->targetClass;
$query = $this->createQuery($targetClass, $params);
if (is_array($model->{$attribute})) {
if ($query->count("DISTINCT [[{$targetAttribute}]]") != count($model->{$attribute})) {
$this->addError($model, $attribute, $this->message);
}
} elseif (!$query->exists()) {
$this->addError($model, $attribute, $this->message);
}
}