设置Rule :: Unique时如何使用更新

时间:2018-09-04 18:05:22

标签: php laravel

添加新客户端时,我必须输入名称,电子邮件以及必须唯一的register_number。现在,如果我要编辑此用户数据,我会收到一个错误,指出寄存器号(如果我不更改它,但我也必须具有更改它的能力)已被使用。现在,当我想更新客户端信息时,如何禁用uniqe寄存器编号。 请求

public function rules()
{
    return [
        'type' => 'required',
        'register_number' => [
            'required',
            Rule::unique('clients')->where(function ($query) {
                return $query->where('active',1);
            })->ignore('register_number', when update) 

        ];
    }
}

谢谢!

2 个答案:

答案 0 :(得分:1)

您在此处传递 register_number 列以忽略它,但是您必须传递要更新的 primaryKey 是错误的

示例:如果您的PK位于客户表中,则必须使用以下方式

send

选中此Link

答案 1 :(得分:0)

要查询,我必须添加:

ignore($this->id)

所以最后:

return [
            'type' => 'required',
            'register_number' => [
                                    'required',
                                    Rule::unique('clients')->where(function ($query) {
                                        return $query->where('active',1);
                                    })->ignore($this->id)

        ];