2017-05-15 12 views
0

私はlaravelでignoreメソッドを使用してプロファイルの更新時に検証を適用しようとしていますが、これはignore()を使用していますが、間違ってこのエラーで終わった場合、私のコードはここにあります。あなたの洞察力をありがとう:)Illuminate Validation Rules Uniqueのオブジェクトをintに変換できません

ユーザコントローラあなたはユニークなチェックのために正しいキーを指定した場合

public function editProfile(Request $request) { 
    $userId=$request->userId; 
    $phoneNumber=$request->phoneNumber; 
    if(!$request){ 
     $this->setMeta("422", "Nothing is there for update"); 
     return response()->json($this->setResponse()); 
    } 
    $validator =Validator::make($request->all(), [ 
     'phoneNumber' => [ 
      'max:10', 
      Rule::unique('users')->ignore($userId,'userId'), 
     ], 
    ]); 
    if ($validator->fails()) { 
     //$response['meta'] = array('code' => "422", 'message' => "Error, please try again"); 
     $errors = $validator->errors(); 
     if ($errors->first('phoneNumber')) { 
      $message = $errors->first('phoneNumber'); 
     } 
     $this->setMeta("403", $message); 
     return response()->json($this->setResponse()); 
    } 

    $homeTown = $request->homeTown; 
    $heightInCm=0; 
     /*$homeTownId= City::where('cityName', $homeTown)->first()->cityId;*/ 
    if($request->userHeight) { 
     $userHeight=$request->userHeight; 
     $heightSplit = explode("'", $userHeight, 2); 
     $feet = $heightSplit[0]; 
     $inches = $heightSplit[1]; 
     $inch=($feet *12)+$inches; 
     $heightInCm=$inch*2.54; 
    } 
    $verticalInCm=0; 
    /*$homeTownId= City::where('cityName', $homeTown)->first()->cityId;*/ 
    if($request->userVertical) { 
     $userVertical=$request->userVertical; 
     $verticalSplit = explode("'", $userVertical, 2); 
     $feet = $verticalSplit[0]; 
     $inches = $verticalSplit[1]; 
     $inch = ($feet *12)+$inches; 
     $verticalInCm = $inch*2.54; 
    } 

    $data= array(
     'profilePic' => $request->profilePic, 
     'nickName' => $request->nickName, 
     'phoneNumber' => $request->phoneNumber, 
     'userHeight' => $heightInCm, 
     'userWeight' => $request->userWeight, 
     'userVertical' => $verticalInCm, 
     'userSchool' => $request->userSchool, 
     'homeTown' => $homeTown, 
     'cityId' => $request->cityId, 
    ); 
    User::where('userId',$request->userId)->update($data); 
} 

答えて

0

私は最終的に答えを得ました。

public function editProfile(Request $request) { 
    $userId=$request->userid; 
    $phoneNumber=$request->phoneNumber; 
    if(!$request){ 
     $this->setMeta("422", "Nothing is there for update"); 
     return response()->json($this->setResponse()); 
    } 
    $validator = Validator::make(
     array(
      'phoneNumber' => $phoneNumber, 
     ), 
     array(
      'phoneNumber' =>'size:10', Rule::unique('users')->ignore($request->userId, 'userId'), 
     ) 
    ); 
    if ($validator->fails()) { 
     //$response['meta'] = array('code' => "422", 'message' => "Error, please try again"); 
     $errors = $validator->errors(); 
     if ($errors->first('phoneNumber')) { 
      $message = $errors->first('phoneNumber'); 
     } 
     $this->setMeta("403", $message); 
     return response()->json($this->setResponse()); 
    } 

    $homeTown = $request->homeTown; 
    $heightInCm=0; 
     /*$homeTownId= City::where('cityName', $homeTown)->first()->cityId;*/ 
    if($request->userHeight) { 
     $userHeight=$request->userHeight; 
     $heightSplit = explode("'", $userHeight, 2); 
     $feet = $heightSplit[0]; 
     $inches = $heightSplit[1]; 
     $inch=($feet *12)+$inches; 
     $heightInCm=$inch*2.54; 
    } 
    $verticalInCm=0; 
    /*$homeTownId= City::where('cityName', $homeTown)->first()->cityId;*/ 
    if($request->userVertical) { 
     $userVertical=$request->userVertical; 
     $verticalSplit = explode("'", $userVertical, 2); 
     $feet = $verticalSplit[0]; 
     $inches = $verticalSplit[1]; 
     $inch = ($feet *12)+$inches; 
     $verticalInCm = $inch*2.54; 
    } 

    $data= array(
     'profilePic' => $request->profilePic, 
     'nickName' => $request->nickName, 
     'phoneNumber' => $request->phoneNumber, 
     'userHeight' => $heightInCm, 
     'userWeight' => $request->userWeight, 
     'userVertical' => $verticalInCm, 
     'userSchool' => $request->userSchool, 
     'homeTown' => $homeTown, 
     'cityId' => $request->cityId, 
    ); 
    User::where('userId',$request->userId)->update($data); 
    $this->setMeta("200", "Profile Changes have been successfully saved"); 
    $this->setData("userDetails", $data); 
    return response()->json($this->setResponse()); 

} 
0

チェック。あなたのコードでは、userIdは、指定されたIDと比較するための主キーです、これは正しいですか?キーがデフォルトで 'id'の場合、パラメータは無視できます。

Rule::unique('users')->ignore($$request->userId), 

'phoneNumber' => 'max:10|unique:users,id,'.$request->userId, 
+0

ええ、私がユーザIDを持っており、将来的には同じ問題を持つ他の人が恩恵を受けることができるようにあなたの努力に感謝:) –

+0

あなたは溶液であなたのポストを更新することができ、私の答えを得ました。 – Sandeesh

+0

ええ、それに取り組んで:) –

関連する問題