You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel多层嵌套数组验证报错,求正确验证方案

Laravel多层嵌套数组验证解决方案

你的问题出在验证规则的层级写法错误,导致Laravel误解了字段路径。结合你的数组结构和验证需求,正确的验证规则写法如下:

正确的验证规则

假设你是将请求中的items数组单独传入验证器,规则应写成:

public function rules()
{
    return [
        // 验证每个外层item的sender字段
        '*.sender.firstName' => 'required|string|max:17',
        '*.sender.lastName' => 'required|string',
        // 验证每个外层item下嵌套items的weight.value字段
        '*.items.*.weight.value' => 'required|integer', // 可根据实际需求调整类型,比如numeric
    ];
}

错误原因说明

你之前写的sender.*.firstName会让Laravel把sender当作数组来遍历,但实际上sender是外层items数组每个元素中的对象,并非数组。Laravel会错误地尝试遍历sender的属性(比如lastName)并寻找firstName字段,这就是为什么会出现sender.lastName.firstName is required的错误提示。

补充说明

如果你是在Request类中直接验证整个请求(而非单独传入items数组),规则需要加上外层的items前缀:

public function rules()
{
    return [
        'items.*.sender.firstName' => 'required|string|max:17',
        'items.*.sender.lastName' => 'required|string',
        'items.*.items.*.weight.value' => 'required|integer',
    ];
}

内容的提问来源于stack exchange,提问作者Farshad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:20:27