@lolrofl01

Как проверить есть ли такое значение в таблице через laravel validate()?

Добрый день.
Есть запись, в которой среди всего прочего можно изменить урл. Урл должен быть уникальным, т.е. других записей с таким урлом быть не должно. При создании записи все легко, проверяю так:
$request->validate([
   'slug'  => [ 'required', 'unique:posts' ],
]);

Работает! Однако при редактировании записи возникает проблема. Если в записи не менять урл, а оставить такой как есть, то сохранить будет невозможно. Валидатор найдет эту самую запись и будет вылезать ошибка, что такой урл уже есть в базе - пишите другой. Можно через валидатор это как-то обойти? Я могу сделать рядом выборку из бд, проверить есть ли запись с таким же урлом но не таким айди как у редактируемой записи. Если есть - только тогда ошибку выдавать. Но это велосипед, вдруг без него можно обойтись?
  • Вопрос задан
  • 520 просмотров
Решения вопроса 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
use Illuminate\Validation\Rule;

Validator::make($data, [
    'email' => [
        'required',
        Rule::unique('users')->ignore($user->id),
    ],
]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
При редактировании записи валидация не так уж и важна, так как данные в полях уже присутствуют.
Или, в крайнем случае, можно не делать ее для инпута с урл
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы