Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Допустим, есть форма с 2 селектами на создание связи между человеком и машиной(то есть для промежуточной таблицы между ними). Нужно сделать проверку, что бы нельзя было создать связь между машиной и человеком, у которых уже создана запись в промежуточной таблице.
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
Сначала создать миграцию на уникальный ключ для всех этих полей, в совокупности. Потом, видимо, в метод, который запись создает, либо включить обработчик этой ошибки (ее вернет база при попытке создания такой записи), либо корректно обработать блок исключений.
Изменено Androbim (01.12.2018 09:22:38)
Не в сети
А как? Валидатор принимает массив, где на каждое поле устанавливаются правила, а мне по сути нужно чтоб была проверка сразу 2 полей. По-идее, конечно, можно проводить валидацию, а после него отдельно брать значение 2 полей и смотреть есть ли запись в промежуточной таблице, что бы потом занести в массив ошибок конкретно эту ошибку. Но может всё-таки в валидатор такую проверку можно засунуть?
https://laravel.com/docs/5.7/validation как Using Closures в офиц документации на создание ф-ции для валидации, но чтоб сразу 2 поля в ней можно было прописать.
Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20
Не в сети
https://stackoverflow.com/a/45518768/272885
https://laravel.io/forum/11-09-2014-cre … -arguments
Изменено artoodetoo (01.12.2018 12:57:39)
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
А как? Валидатор принимает массив, где на каждое поле устанавливаются правила, а мне по сути нужно чтоб была проверка сразу 2 полей.
Ошибка вставки некорректрной записи, в данном случае, сработает на уровне БД, потому что правила уникального ключа, установленного на несколько полей, не дадут вставить идентичную запись. Базе нет никакого дела до валидатора, ее установки приоритетны, можно вообще ничего на уровне PHP не проверять. А вот после того, как БД запретит вставку, в программу вернется исключение, которое нужно просто корректно обработать, наверное, лучше в блоке try-catch.
Но это лишь вариант. Как вижу, выше предлагается, как раз, решать вопрос на уровне валидатора.
Не в сети