Search code examples
phplaravellaravel-5.4laravel-validation

Laravel force unique role validation fail in form request


My controller is as below:

public function update(PermissionFormRequest $request,$id)
{
    $permissionUpdated = $this->permission->update($request,$id);
    if($permissionUpdated){
        //return $permissionUpdated;
        return 'updated';
    }
    return response()->json(['message' => 'Can not update ticket']);    
}

Form request code is:

public function rules()
{
    return [
        'name' =>'required|unique:permissions,name,'.$this->id,
    ];
}

When trying to update with same id, an error is thrown as:

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


Solution

  • To get the id in the Request you can use the route() method. Keep in mind that use parameter name in route('id') which is used in your routes.php file!

    public function rules()
    {
        $id = $this->route('id'); //or whatever it is named in the route
        return [
            'name' =>'required|unique:permissions,name,'.$id,
        ];
    }
    

    Hope this helps!