ModelExists - Проверка существования записи в БД
Валидатор ModelExists позволяет проверить существование записи в базе данных. Это хорошо подходит для тех случаев, когда у вас в форме есть привязка к каким-то существующим записям в базе данных.
- model: Класс модели, который будет использоваться для построения запроса к БД.
- field: Столбец в БД по которому будет осуществляться поиск записи.
// Массив полей и значений
$data = [
'test' => 45,
];
// Настройки валидатора
$rules = [
'test' => [
'ModelExists' => [
'model' => \Johncms\Users\User::class,
'field' => 'id',
],
],
];
// Валидация
$validator = new \Johncms\Validator\Validator($data, $rules);
if ($validator->isValid()) {
echo 'OK';
} else {
d($validator->getErrors());
}
В указанном примере будет выполнена проверка наличия пользователя c идентификатором 45 в таблице users.
Запрос который будет выполнен:
SELECT * FROM `users` WHERE `id` = 45
В результате, если будет найдена запись с id = 45, то валидатор будет считать проверку успешной, если не найдет, то вернёт ошибку.
Рассмотрим ещё один пример:
// Массив полей и значений
$data = [
'test' => 'admin',
];
// Настройки валидатора
$rules = [
'test' => [
'ModelExists' => [
'model' => \Johncms\Users\User::class,
'field' => 'name',
],
],
];
// Валидация
$validator = new \Johncms\Validator\Validator($data, $rules);
if ($validator->isValid()) {
echo 'OK';
} else {
d($validator->getErrors());
}
В этом примере будет выполнен поиск записи у которой поле name = admin.
Будет выполнен следующий запрос:
SELECT * FROM `users` WHERE `name` = 'admin'
Результат будет такой же как и в случае с id. Если будет найдена строка с полем name = admin, то валидация пройдет успешно, если нет, будет возвращена ошибка.