Валидатор ModelNotExists позволяет проверить отсутствие записи в базе данных. Это подойдет для тех случаев, когда вам нужно проверить отсутствие записи в таблице прежде чем её добавить. Например, с помощью этого валидатора, в форме регистрации пользователя вы можете проверить существует ли пользователь с введенным логином или нет.
Для работы этого валидатора вам потребуется существующая модель.
model: Класс модели, который будет использоваться для построения запроса к БД.
field: Столбец в БД по которому будет осуществляться поиск записи.
exclude: Параметры для задания условий исключения из выборки. Может содержать анонимную функцию или массив с полями field и value.
В примере выше выполняется проверка наличия в таблице users пользователя с полем mail, содержащим admin@admin.ru. При этом из выборки исключаются строки с name = admin и id = 1. Для расширения запроса на выборку используется анонимная функция. Она позволяет дополнять запрос любыми условиями. Валидатор выполнит следующий запрос:
Рассмотрим более простой пример, где в параметр exclude передается массив:
Если вам не требуется сложное условие для исключения записей из выборки, то вы можете использовать такой вариант задания исключений. При таких настройках валидатор выполнит следующий запрос:
Ну и давайте рассмотрим минимальный вариант использования, вообще без исключений.
При таких настройках валидатор просто проверит наличие записи с mail = admin@admin.ru. Если запись будет найдена, то валидатор вернёт ошибку. Если нет, проверка пройдет успешно.
Запрос, который выполнит валидатор при этих настройках будет таким: