Я пытаюсь ограничить обязательный: уникальный валидатор в моем приложении Laravel 5.2 проверкой уникальности моего столбца ‘slug’ по сравнению только с результатами таблицы определенного user_id. Другими словами, слаг должен быть уникальным, но только для каждого пользователя. У меня это работает для функции store (), с помощью следующего кода:
'slug' => 'required|unique:contents,slug,NULL,id,user_id,' . Auth::id()
Это работает просто отлично. Однако я не могу заставить функцию update () работать так же, потому что не могу заставить валидатор прекратить проверять уникальность по отношению к результату записи, которая в данный момент обновляется. Код, который я сейчас использую:
'slug' => 'required|unique:contents,slug,' . $content->slug . ',id,user_id,' . Auth::id()
Этот код мне не подходит, но я попробовал несколько вариантов, и ни один из них не работает так, как мне бы хотелось. На мой взгляд, я думаю, что это будет работать:
'slug' => 'required|unique:contents,id,' . $content->id . ',user_id,' . Auth::id()
Но это не так. Кто-нибудь знает, в чем моя проблема? Любое руководство будет высоко ценится.
Трудно дать правильный ответ, не зная реальных имен атрибутов в вашей модели. Валидатор поддерживает следующие параметры
unique:{0},{1},{2},{3},{4},{5}
где:
{0}
= имя таблицы проверяется
{1}
= имя столбца проверяется
{2}
= Значение идентификатора строки в {0}
пропустить проверку
{3}
= имя столбца первичного ключа в {0}
{4}
= имя столбца дополнительного фильтра в {0}
{5}
= значение для дополнительного столбца фильтра
Таким образом, кажется, у нас явно есть значения для {0}
, {1}
, {2}
а также {5}
, Я не уверен из информации вашего вопроса, какие правильные значения для {3}
а также {4}
являются. Если бы у меня была догадка, я бы написал правило валидатора следующим образом:
'slug' => 'required|unique:contents,slug,' . $content->id . ',id,user_id,' . Auth::id()
Других решений пока нет …