【问题标题】:Laravel validation throws error on updating same unique valueLaravel 验证在更新相同的唯一值时抛出错误
【发布时间】:2021-07-20 15:26:50
【问题描述】:

我有一个输入 name 的表单。我想通过该表单更新数据库表。唯一的条件是,name 必须是唯一的。所以这就是我在后端验证所做的:

$this->validate($request, [
    'name' => 'required|unique:myTableName'
]);

它按预期工作。当我尝试输入数据库中已存在的名称时,它会引发此错误"The name has already been taken."。但是我遇到的问题是,当我从数据库中更新相同的条目而不做任何更改时(即我去编辑表单,什么都不做,更新表单),它向我显示了同样的错误。在这种情况下,我不希望出现错误,因为我正在更新相同的值。如何通过 laravel 验证实现这一点?

【问题讨论】:

标签: php laravel validation


【解决方案1】:

您必须使用以下代码

$this->validate($request, [
    'name' => ['required', Rule::unique('myTableName')->ignore($yourVariable->id)],
]);

在代码下方添加标题部分

use Illuminate\Validation\Rule;

More Details here

【讨论】:

    【解决方案2】:

    您需要传递表 id,以从验证中忽略该字段

    'name' => 'required|unique:myTableName,name,' . $table->id,
    

    使用自定义规则:

    use Illuminate\Validation\Rule;
    
    'name' => ['required', Rule::unique('myTableName', 'name')->ignore($table->id)],
    

    【讨论】:

      猜你喜欢
      • 2014-08-20
      • 2014-06-28
      • 1970-01-01
      • 2018-08-09
      • 2019-02-26
      • 2015-01-06
      • 1970-01-01
      • 2015-04-24
      • 2018-07-17
      相关资源
      最近更新 更多