我正在使用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的隐藏值
答案 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
选项,那么将使用字段名称。
'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
希望这会有所帮助。