2016-01-15 2 views
0

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

public function rules() 
    { 
     return [ 
      'name' => 'required|max:255', 
      'email' => 'required|email|max:255|unique:users', 
     ]; 
    } 

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

общественная функция UpdateData (UpdateDataRequest $ запрос) {

DB::table('users') 
    ->where('id', Auth::user()->id) 
    ->update(array('email' => $request->email, 'name' => $request->name)); 

return redirect('panel'); 

}

Как сделать это правильно?

ответ

3

Эта точная ситуация используется в качестве примера в документах.

https://laravel.com/docs/5.2/validation#rule-unique

Принуждение Уникальное правило игнорировать Данный ID:

Иногда, вы можете игнорировать данный идентификатор во время уникальной проверки. Например, рассмотрите экран «профиля обновления», который включает имя пользователя, адрес электронной почты и местоположение. Конечно, вы захотите проверить, что адрес электронной почты уникален. Однако, если пользователь только изменяет поле имени, а не поле электронной почты, вы не хотите, чтобы ошибка проверки была выбрана, потому что пользователь уже является владельцем адреса электронной почты. Вы только хотите выдать ошибку проверки, если пользователь предоставляет адрес электронной почты, который уже используется другим пользователем. Для того, чтобы сказать, уникальное правило игнорировать идентификатор пользователя, вы можете передать идентификатор в качестве третьего параметра:

'email' => 'unique:users,email_address,'.$user->id 

Если таблица использует ключ имя основного столбца, кроме идентификатора, вы можете указать его в качестве четвертого параметра:

'email' => 'unique:users,email_address,'.$user->id.',user_id' 
+0

Большое спасибо за помощь! – Krystus

Смежные вопросы