我有一个表单,它有一个输入name
。我想通过该表单更新数据库表。唯一的条件是name
必须是唯一的。这就是我在后端进行验证时所做的:
$this->validate($request, [
'name' => 'required|unique:myTableName'
]);
它正在按预期工作。当我尝试输入数据库中已经存在的名称时,它会抛出此错误"The name has already been taken."
。但我遇到的问题是,当我在没有任何更改的情况下从数据库更新同一条目时(即,我去编辑表单,什么都不做,更新表单(,它会显示同样的错误。在这种情况下,我不希望出现错误,因为我正在更新相同的值。如何通过laravel验证实现这一点?
您必须使用以下代码
$this->validate($request, [
'name' => ['required', Rule::unique('myTableName')->ignore($yourVariable->id)],
]);
在代码下方添加标题部分
use IlluminateValidationRule;
更多详情点击这里
您需要传递表id,以忽略验证中的该字段
'name' => 'required|unique:myTableName,name,' . $table->id,
使用自定义规则:
use IlluminateValidationRule;
'name' => ['required', Rule::unique('myTableName', 'name')->ignore($table->id)],