php - 更新时对复合键的 Laravel 唯一验证
问题描述
我想在 Laravel 中为复合键添加一个验证规则。验证规则在添加新记录时工作正常,但在更新同一记录时,由于名称已被采用,因此会出错。
$validator = Validator::make($request->all(), [
'name' => 'required|unique:labs,name,NULL,id,service_id,'.$request>input('service_id'),
]);
在此先感谢。任何帮助将不胜感激。
解决方案
你需要它来忽略当前的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,而不是请求中的。
推荐阅读
- reactjs - 为什么我的图像标签出现“意外令牌?
- git - Git将分支合并到父亲并恢复提交
- discord.js - Discord.js V13 使用斜线命令时添加角色
- github - 有哪些方法可以在不下载到本地机器的情况下将数据从 gdrive 导入 colab 并使 notebook 可共享?
- python - 使用python根据某些值过滤嵌套的json
- python - 从字符串中提取数据
- python - numpy 可以对字典对象列表进行排序,还是 pandas 数据框操作是我唯一的选择?
- python - 遍历字符串列表:错误消息
- python - 打开电子邮件时触发Python Outlook win32事件
- python - 如何使用 ruamel.yaml 读取多个 yaml 定义