我的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上运行的。
答案 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)
]
)