Я хочу проверить, что поле name
в таблице базы данных pools
уникально. Когда я создаю новую запись, это работает отлично:Laravel условный проверка подлинности уникальности не работает
$rules = [
'name' => 'required|unique:pools'
];
Однако, когда я хочу, чтобы обновить существующую запись, то уникальность проверка должна пропустить этот пункт обновляемого (как, очевидно, название может быть без изменений). Поэтому я выкопался и нашел этот вариант:
$rules = [
'name' => 'required|unique:pools,id,1'
];
Где 1 - это идентификатор записи, которую я обновляю. Это, похоже, решило проблему, но затем я протестировал с другим ID (в этом случае валидатор должен вернуть ошибку), но он по-прежнему позволяет добавить новую запись с тем же name
.
Например, если я
$rules = [
'name' => 'required|unique:pools,id,4'
];
где 4 представляет собой идентификатор совершенно другой записи в БД (или даже идентификатор, который не существует вообще), уникальность проверка не работать и позволяет мне делать столько дубликатов записей, сколько захочу. Казалось бы, добавление любого идентификатора к указанному выше правилу заставляет валидатор игнорировать все совпадения в БД, кроме только одного с данным ID.
В принципе, у меня есть аналогичные проблемы в одной описанных в этом вопросе, за исключением того, что ответ не работает для меня:
Laravel 4 Validation unique(database) ignore current
Любого раствором?
Ха-ха, это было быстро :) – Iamzozo
вы правы @lamzozo –
я вижу. Глупо. Я приму ответ, который пришел на 2 секунды раньше, я думаю, так как они оба одинаковы. – jovan