2016-05-07 8 views
0

私はLaravel 5.2を使用しています。ユーザーが情報を更新できるダッシュボードを作成しようとしていますが、バリデーターのユーザーを一意に迂回しています。メールをバイパスする=ユニークユーザー:laravelのユーザー

ユーザーが同じ電子メールを保持したい場合、バリデーターは「電子メールがすでに取得されました」というエラーを表示します。また、別のユーザーが予約した別の電子メールに電子メールを変更しないでください。

このユーザーが唯一のこのメールを持っている場合は、どうすればこの検証を回避できますか?

私のコントローラ機能:

public function update(Request $request) 
{ 

    $validator = Validator::make($request->all(), [ 
     'name'    => 'required|max:255', 
     'email'    => 'required|email|max:255|unique:users', 
     'password'   => 'required|min:6|confirmed',     
    ]); 

    // if fails, return response with errors 
    if($validator->fails()) 
     return back()->withErrors($validator)->withInput(); 

    $user = Auth::user(); 
    $user->name    = $request->input('name'); 
    $user->email   = $request->input('email'); 
    $user->password   = bcrypt($request->input('password')); 
    $user->update(); 


    return back()->withInput(); 
} 

答えて

1

Laravelのユニークバリデータを確認してください。

構文は次のとおりです。その後、我々は必要な[メール]列を追加しているユーザーのID:ユニーク後

'email' => 'required|email|max:255|unique:users,email,'.$id 
+0

まさに私が欲しいもの!ありがとうございました :) – Rashid

0

だけにコードを変更:この作品はなぜ

public function update(Request $request) 
    { 
    $id = Auth::user()->id; 
    $validator = Validator::make($request->all(), [ 
     'name'    => 'required|max:255', 
     'email'    => 'required|email|max:255|unique:users'.$id, 
     'password'   => 'required|min:6|confirmed',     
    ]); 

    // if fails, return response with errors 
    if($validator->fails()) 
     return back()->withErrors($validator)->withInput(); 

    $user = Auth::user(); 
    $user->name    = $request->input('name'); 
    $user->email   = $request->input('email'); 
    $user->password   = bcrypt($request->input('password')); 
    $user->update(); 


    return back()->withInput(); 
} 

?まあ、ラベールUnique validationは、指定されたテーブルの一意の値を検索します。したがって、unique:usersは、電子メールがdbに存在するかどうかを検索します。ここのユーザーIDは、このユーザーの小切手を除外する方法として機能します。

また、電子メールを編集したくない場合は、その電子メールを要求から除外してください。

$ input = $ request-> excpet(['email']);あなたはユニークなチェックからIDを与え除外することができ、追加のパラメータを取ることができdocs

+0

:あなたのケースでは

unique:<table>,<column>,<id_to_exclude> 

、あなたはfollwing検証ルールが必要になります必要なユーザー例: 「電子メール」=>「一意:ユーザー、電子メール」。$ user-> id 作品、ありがとう:) – Rashid

関連する問題