у меня это так выглядит
[
'phone', // атрибут который должен быть уникальным
'unique', // валидатор
'targetClass' => '\common\models\User', // по какой модели проверяю
'targetAttribute' => 'username', // атрибут модели \common\models\User
'filter' => ['not', ['username' => $this->phone] ], // проверяю для всех кроме текущей иначе update не пройдет валидацию
'when' => function ($model, $attribute) {
return $model->{$attribute} != $model->getOldAttribute($attribute);
}, // только тогда когда этот атрибут был изменен
'message' => 'Этот телефон уже используется',
],