Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Здравствуйте!
Laravel 5.4.
Есть вот такая форма:
<form>
<label> USER 1</label>
<input type="text" name="fullname[0]">
<input type="text" name="document_num[0]">
<label> USER 2</label>
<input type="text" name="fullname[1]">
<input type="text" name="document_num[1]">
<label> USER 3</label>
<input type="text" name="fullname[2]">
<input type="text" name="document_num[2]">
.....
<label> USER N</label>
<input type="text" name="fullname[n]">
<input type="text" name="document_num[n]">
<input type="submit">
</form>
Кол-во добавляемых в форму юзеров неограничено.
Есть таблица 'users':
id | fullname | document_num
1 | John | 111
2 | Jane | 112
.. | ... | ...
Нужно при отправке проверять для каждого User'a (через Form Validation или Validator):
(1) Существует ли уже номер документа юзера $request->document_num[n] в таблице 'users' в поле 'document_num'.
(2) Если да, то проверить совпадает ли имя этого юзера из формы $request->fullname[n] с значением поля fullname из строки, где найдено совпадение номера документа (1)
Или по-русски - проверить, если юзер с таким номером паспорта уже есть в БД, совпадает ли введенное для него в форму имя с тем, что уже есть БД.
Соотвественно, если такого номера документа в таблице нет (Новый Юзер) или все совпадает (Старый юзер без изменений) - возвращаем true, если номер документа уже есть, а Имя не совпадает - возвращаем False.
Буду признателен всем, кто попытается помочь:)
Не в сети
Попробуйте в документации порыть в направлении
exists:table,column
Не в сети
Androbim, пробовал, конечно:)
Его не достаточно для решения этой задачи.
Не в сети
Как вариант - проверять в контроллере при вставке.
foreach ($request->document_num as $n => $doc_num) {
if ($user = User::where('document_num',$doc_num)->first()) {
// Пользователь с таким номером паспорта существует
if ($user->fullname == $request->fullname[$n]) {
// Один и тот же юзер
} else
// Разные юзеры с одинаковыми данными
}
}
}
Можно сделать через FOR, как вариант.
Главное не забыть навешать индексы на эти поля для таблицы Users.
Не в сети
Если стандартной валидации не хватает, попробуй добавить кастом валидацию
Вот как вариант, решение: https://stackoverflow.com/questions/287 … -laravel-5
Не в сети