4

電子メールとユーザー名に固有の検証規則を持つusersテーブルがあります。私がユニークな検証を無視しないで更新しようとしているとき。以下の私のコードを見てください。Laraval 5.4検証リクエスト、更新時に一意の検証を処理する方法は?

UserRequest.php

public function rules() 
{ 
    return [ 
     'name' => 'required', 
     'mobile' => 'required', 
     'email' => 'required|unique:users,email'.$id, 
     'usercategory' => 'required', 
     'username' => 'required|unique:users,username'.$id, 
    ]; 
} 
+1

あなたは '$ id'をどこから来たのですか? – C2486

+0

これを解決しましたか? – C2486

答えて

0

と行の前に更新

ためputメソッドを使用と仮定し

$id = $this->isMethod('put') ? ',' . auth()->id() : ''; 

をこのようにする必要があります:

use Illuminate\Validation\Rule; 

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

rule-uniqueを確認してください。

0

Laravel docs

public function rules($id='') 
{ 
    $id = $id ? ','.$id.',id':''; 
    return [ 
     'name' => 'required', 
     'mobile' => 'required', 
     'email' => 'required|unique:users,email'.$id, 
     'usercategory' => 'required', 
     'username' => 'required|unique:users,username'.$id, 
    ]; 
} 

以下のように、あなたがunique3rd4thのparamを提供持っているようにあなたは、あなたが更新のために検証する場合idをスキップするために必要なルール

unique:table,column,except,idColumn 
+0

あなたのコードが動作していません – Sandeep

+0

@Sandeep: '$ id'をルール関数に送りますか? – C2486

0

あなたはこのようなもの使用することができますlaravel 5.5あなたはこの

public function rules() 
{ 

    $id = $this->request->get('id') ? ',' . $this->request->get('id') : ''; 

    return [ 
     'name' => 'required', 
     'mobile' => 'required', 
     'email' => 'required|unique:users,email'.$id, 
     'usercategory' => 'required', 
     'username' => 'required|unique:users,username'.$id, 
    ]; 
} 
0

を試してみてください、あなたがreturn

関連する問題