Laravel唯一验证在更新上失败

时间:2018-09-22 08:29:59

标签: php laravel laravel-5

我正在使用laravel 5.7并使用表单请求,但是我在数据库中具有唯一的branch_name以及唯一的slug,但是每次更新时,erorr .branch名称已经存在

public function rules()
{

    switch($this->method()) {

    case 'DELETE':
        return [
            'slug'=>'required',

        ];
    case 'POST':
    case 'PUT':
    case 'PATCH':
        return [
            'branch_name'=>'required|max:255|unique:branches,branch_name,id'.$this->id,
            'branch_address'=>'required',

        ];
    default:
        break;
    }
}

我也尝试了以下方法,但没有用

'branch_name'=>'required|max:255|unique:branches,branch_name,'.$this->id,

'branch_name'=>'required|max:255|unique:branches,branch_name,slug'.$this->slug,

即使我在规则方法上打印,我也可以看到id和slug的隐藏值

3 个答案:

答案 0 :(得分:0)

尝试这个

 use Illuminate\Validation\Rule;


'branch_name' => [
    'required|max:255',
    Rule::unique('branches')->ignore($branches->id),
],

答案 1 :(得分:0)

  

unique:table,column,except,idColumn

要验证的字段在给定的数据库表中必须是唯一的。如果未指定column选项,那么将使用字段名称。

validation

'branch_name' => 'required|max:255|unique:branches,branch_name,' . $this->id . ',id',

OR

'branch_name'=>'required|max:255|unique:branches,branch_name,' . $this->slug . ',slug',

答案 2 :(得分:0)

这可以做到:

 use Illuminate\Validation\Rule;

'branch_name' => [
    'required|max:255',
    Rule::unique('branches')->ignore($this->route('branch')),
]

用您的web.php编辑路径中的路径参数名称替换“分支”。

您可以在添加和修改两者中使用此验证。

如果您的数据库字段名称不同,则将其作为忽略函数中的第二个参数发送。喜欢

Rule::unique('branches')->ignore($this->route('branch'), 'branchName'),

详细信息:Laraval Validation unique

希望这会有所帮助。