首页 > 解决方案 > 更新时对复合键的 Laravel 唯一验证

问题描述

我想在 Laravel 中为复合键添加一个验证规则。验证规则在添加新记录时工作正常,但在更新同一记录时,由于名称已被采用,因此会出错。

      $validator = Validator::make($request->all(), [ 
        'name' => 'required|unique:labs,name,NULL,id,service_id,'.$request>input('service_id'),
    ]);

在此先感谢。任何帮助将不胜感激。

标签: phplaravel

解决方案


你需要它来忽略当前的ID。这可以在此处记录的唯一规则内完成:https ://laravel.com/docs/8.x/validation#rule-unique

use Illuminate\Validation\Rule;

$service_id = // query here for the CURRENT service_id (not the one in the request), as you want to ignore the current one

Validator::make($data, [
    'name' => [
        'required',
        Rule::unique('service_id')->ignore($service_id),
    ]
]);

确保忽略唯一的当前 service_id,而不是请求中的。


推荐阅读