在Laravel中如何验证数组内元素的id是否存在重复?
Laravel 数组重复 ID 校验实现方案
Laravel 自带内置的 distinct 验证规则,完全可以满足该场景的校验需求,不需要额外自定义验证逻辑。
基础使用方法
假设你提交的请求参数中,目标数组对应的字段名为 items,验证规则写法如下:
$validated = $request->validate([ 'items.*.id' => 'required|distinct' ]);
- 规则逻辑:
items.*.id会遍历匹配items数组下所有元素的id字段,distinct会自动比对所有匹配到的id值,只要存在两个及以上相同的id,就会直接判定验证失败。 - 默认采用严格比较模式,数字
222和字符串"222"会被判定为不同值,如果需要非严格比较,可将规则调整为distinct:false。
自定义错误提示
如果需要修改默认的错误提示文案,可按如下方式配置:
$messages = [ 'items.*.id.distinct' => '提交的数据存在重复的id,请检查后重试' ]; $validated = $request->validate([ 'items.*.id' => 'required|distinct' ], $messages);
内容的提问来源于stack exchange,提问作者tempra
相关产品推荐
相关产品推荐

