Как игнорировать данный идентификатор во время проверки - PullRequest
0 голосов
/ 18 мая 2018

Не голосуйте против этого вопроса, я знаю, что он задавался ранее, но я не могу найти ни одного с рабочим ответом!

Я пытаюсь получить уникальный адрес электронной почты, но игнорировать данный идентификатор во время проверки.Попробовал несколько методов, чтобы сделать это, вот два из них, которые были многообещающими, не сработали:

Validator::make($request->all(), [
     'username' => ['username', Rule::unique('user', 'username')->ignore($user->id)]
]);

еще один:

'username' => 'required|max:30,',
Rule::unique('user')->ignore($user->id),

спасибо за помощь.

Это еще одна информация, если вы считаете, что примеры aboce должны определенно работать.Форма:

<input type="text" name="username" class="formClasses" id="usernameLocal"
 value="{{ Auth::user()->username }}">

Контроллер:

public function saveUserChanges(Request $request){

    $user = Auth::user();

    $this->validate($request, [
        'username' => 'required|max:30,',
        Rule::unique('user')->ignore($user->id)
    ]);

    $user->username = $request['username'];

    $user->update();

    return redirect()->route('userProfil', $user->userprofile->slug);
}

1 Ответ

0 голосов
/ 18 мая 2018

Если вы пытаетесь гарантировать уникальный адрес электронной почты, правило будет следующим:

Validator::make($data, [
'email' => [
    'required',
    Rule::unique('users')->ignore($user->id),
    ],
]);

Если ваше поле не email в таблице пользователей, сделайте следующее:

Validator::make($data, [
'email' => [
    'required',
    Rule::unique('users', 'column_name')->ignore($user->id),
    ],
]);

Наконец, если ваш уникальный идентификатор в таблице пользователей не равен id, тогда сделайте:

Validator::make($data, [
'email' => [
    'required',
    Rule::unique('users', 'column_name')->ignore($user->id, 'unique_key_name'),
    ],
]);

Чтобы использовать ваш код напрямую, он будет выглядеть следующим образом:

$this->validate($request, [
        'username' => [
            'required',
            'max:30',
            Rule::unique('users')->ignore($user->id)
        ]
    ]);

изменения, которые я сделал, были обязательными, и максимальное правило должно быть разделено, а все правила должны быть в массиве.Я также изменил таблицу с user на users, так как это значение по умолчанию для Laravel.

См. Документы в https://laravel.com/docs/master/validation#rule-unique

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...