С exist пока работать не приходилось - ни в одном проекте не было в нём нужды. По большому счету можно написать свой валидатор в используемой модели, что-то в духе:
public function validateUsername($attribute, $params)
{
if (!$this->hasErrors()) {
if (($user = User::find()->where("phone = :username OR email LIKE :username", ['username'=>$this->$attribute])->one()) === null) {
$this->addError($attribute, 'User not found');
}
}
}
и добавить это правило в rules:
public function rules()
{
return [
...
['username', 'validateUsername'],
...
];
}