Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 03.07.2017 21:57:48

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.

Буду признателен всем, кто попытается помочь:)

Не в сети

#2 04.07.2017 08:06:45

Re: Laravel Валидация Формы: проверить, если такой пользователь в базе

Попробуйте в документации порыть в направлении
exists:table,column

Не в сети

#3 04.07.2017 10:19:06

Re: Laravel Валидация Формы: проверить, если такой пользователь в базе

Androbim, пробовал, конечно:)
Его не достаточно для решения этой задачи.

Не в сети

#4 04.07.2017 10:37:48

Re: Laravel Валидация Формы: проверить, если такой пользователь в базе

Как вариант - проверять в контроллере при вставке.

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.

Не в сети

#5 04.07.2017 13:43:02

Re: Laravel Валидация Формы: проверить, если такой пользователь в базе

Если стандартной валидации не хватает, попробуй добавить кастом валидацию
Вот как вариант, решение: https://stackoverflow.com/questions/287 … -laravel-5

Не в сети

Подвал раздела