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

Laravel能否无需前缀键验证索引对象数组?

Laravel 6.x 验证顶级索引数组的正确方式

Laravel完全支持无需前缀键的情况下直接验证顶级索引数组,你之前的规则不生效是因为层级匹配错误。

你的提交数据是顶级一维数组,数组中的每个元素是包含多个字段的对象,所以验证规则里只需要一层*来指代数组中的每个元素,而不是两层*.*。你之前写的*.*.order_id是在匹配「数组元素的子数组中的order_id」,但你的结构里每个元素直接有order_id字段,规则层级多了一层,导致无法匹配到对应字段,验证自然不生效。

正确的验证规则如下:

public function rules()
{
    return [
        '*.order_id'      => 'required|integer',
        '*.is_delay'      => 'required|boolean',
        '*.ship_date'     => 'nullable|datetime',
        '*.times'         => 'required|integer|min:1',
        '*.warehouse_id'  => 'required|integer',
        '*.ship_type'     => 'required|integer',
        '*.package'       => 'required|array',
        '*.package.*.sku' => 'required|string',
        '*.package.*.qty' => 'required|integer|min:1',
    ];
}

规则层级说明:

  • *.order_id:指代顶级数组中每个元素的order_id字段
  • *.package.*.sku:指代顶级数组中每个元素的package子数组里的每个元素的sku字段,这个层级是正确的,因为package本身是数组,需要额外一层*来遍历其内部元素

修改后就能正确验证你提交的顶级索引数组数据,无需给数据添加前缀包裹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:12:16