Laravel唯一验证忽略更新规则

时间:2020-05-26 17:15:05

标签: laravel laravel-5 laravel-validation

我的name模型上有一个Client字段,该字段必须唯一。对于store方法,我有以下规则:

array (
  'token' => 'string|max:250',
  'directory' => 'max:250',
  'name' => 'required|string|max:250|unique:clients',
)  

对于update方法,我已经修改了此规则集以忽略当前ID,以避免标识重复的对象: $rules['name'] = $rules['name'] . ',id,' . $id;

这将产生以下规则集(记录ID为105):

array (
  'token' => 'string|max:250',
  'directory' => 'max:250',
  'name' => 'required|string|max:250|unique:clients,id,105',
)  

执行update方法时,在验证过程中将返回The name has already been taken.响应。

我意识到这是一个讨论充分的话题,但是我相信我遵循正确的方法。有人可以指出我的逻辑错误吗?

注意:这是在Laravel 5.8上运行的。

1 个答案:

答案 0 :(得分:0)

array(
    'token' => 'string|max:250',
    'directory' => 'max:250',
    'name' => [
        'required', 'string', 'max:250',
        \Illuminate\Validation\Rule::unique(Client::class, 'email')->ignore($this->id)
    ]
)  
相关问题