在更新时忽略唯一的验证ID

时间:2017-05-07 04:40:43

标签: php laravel

我有一个CategoryRequest.php文件和一个字段名称'的唯一验证。 当我使用表单创建时,它可以工作,因此它可以防止插入具有相同名称的类别。

问题在于,当尝试更新它时,说:'该名称已被采用。'或者如果我尝试下面的代码,它会说:'未定义的变量:id'。

我如何更新并在验证时忽略自己的名字? 这是我的代码:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CategoryRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name' => 'required|unique:categories,name,'.$id.',id'
        ];
    }
}

1 个答案:

答案 0 :(得分:2)

改变这个:

return [
    'name' => 'required|unique:categories,name,'.$id.',id'
];

到此:

return [
    'name' => 'required|' . Rule::unique('categories')->ignore('category')
];

或者这个:

return [
    'name' => ['required', Rule::unique('categories')->ignore('category')]
];