Laravel验证在更新相同的唯一值时抛出错误



我有一个表单,它有一个输入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)],

相关内容

  • 没有找到相关文章

最新更新