Laravel 5.2 Validator: ограничение проверки уникального поля конкретным пользователем

Я пытаюсь ограничить обязательный: уникальный валидатор в моем приложении 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()

Но это не так. Кто-нибудь знает, в чем моя проблема? Любое руководство будет высоко ценится.

1

Решение

Трудно дать правильный ответ, не зная реальных имен атрибутов в вашей модели. Валидатор поддерживает следующие параметры

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()
6

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector