更新时的Laravel验证


Laravel validation on update

当我想更新用户时,这是我的规则:

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."]}}

我做错什么了吗?

试试这个:

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;
}