2016-05-09 5 views
0

Когда я хочу, чтобы обновить пользователя это мои правила:Laravel проверки на обновление

private function validateUser(Request $request,$id) 
    { 
     $user = [ 
      'firstname'    => 'required|string|max:60', 
      'lastname'    => 'required|string|max:60', 
      'phonenumber'   => 'required|string|max:20', 
      'email'     => 'required|unique:user,email,'.$id, 
      'company_id'   => 'required|integer', 
      'role_id'    => 'required|integer' 
     ]; 

     $validator = Validator::make($request->all(), $user); 

     if($validator->fails()) 
     { 
      return $validator->errors(); 
     } 
     return null; 
    } 

Но 'email' =>'required|unique:user,email,'.$id, часть не работает так, как я хочу. Потому что прямо сейчас, когда я обновляю пользователя, я получаю сообщение json:

{"user":{"email":["The email has already been taken."]}} 

Я что-то не так?

+0

Привет, что такое '$ id' переменной в правилах проверки? – Hammerbot

+0

И, во-вторых, я полагаю, что ошибка возникает, когда пользователь не меняет свой адрес электронной почты при редактировании своей учетной записи? Но все работает, когда он меняет его? – Hammerbot

+0

@EL_Matella $ id - это идентификатор пользователя, которого я хочу обновить. И да, ошибка там, когда пользователь не меняет свой адрес электронной почты. – Jamie

ответ

0

Попробуйте это:

private function validateUser(Request $request,$id) 
{ 
    $user = [ 
     'firstname'    => 'required|string|max:60', 
     'lastname'    => 'required|string|max:60', 
     'phonenumber'   => 'required|string|max:20', 
     'email'     => 'required|unique:user,id,$id', 
     // otherwise you can do the following 
     'email'     => 'required|unique:user,id,{{Auth::user()->id}}', 
     'company_id'   => 'required|integer', 
     'role_id'    => 'required|integer' 
    ]; 

    $validator = Validator::make($request->all(), $user); 

    if($validator->fails()) 
    { 
     return $validator->errors(); 
    } 
    return null; 
} 
+0

Это нормально, только если вы хотите обновить текущие зарегистрированные данные пользователя. Что происходит, если вы хотите обновить данные другого пользователя? .. Я думаю, что лучшим способом было бы использовать '$ request-> id' и убедиться, что для маршрута требуется ID –

+0

@prava, но идентификатор может быть от любого пользователя. – Jamie

+0

Насколько я знаю, 'id, $ id', это проверить, если письмо уникально или нет (кроме проверки, которую нужно выполнить для текущего пользователя). В противном случае для незарегистрированного пользователя, в любом случае, мы должны сделать поле 'email' как' UNIQUE' в таблице DB. – prava

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