Laravel表单验证中子级数据的唯一性过滤如何写?

【场景】
在更新产品时会传递产品表products的信息和子产品表product_items的信息,大概是这样:

{
    "name": "",
    "items": [
        {
            "id": 13,
            "name": "",
            "spec_name": "B01 浅肤色",
            "price": 19.99,
            "purchase_limit_qty": 3,
            "inventory_qty": 9999
        },
        {
            "id": 14,
            "name": "",
            "spec_name": "B02 象牙白",
            "price": 19.99,
            "purchase_limit_qty": 3,
            "inventory_qty": 9999
        },
    ],
    "status": true,
    "is_pick_up": true,
    "is_ship": true,
    "start_ship_time": "",
    "stop_ship_time": "",
    "user_id": 5,
    "assistant_name": ""
}

如何在更新时忽略当前的子产品ID呢?Route::unique()->ignore($item_id)不知道如何获取这个ID。当前过滤代码如下:

$id = $this->route('product', 0);
        switch ($this->method()) {
            case 'POST':
            case 'PUT':
                $rules = [
                    "name" => "required|unique:products,name,{$id}",
                    "items" => 'array',
                    "items.*.spec_name" => [
                        'required',
                        'distinct',
                        Rule::unique('product_items', 'spec_name')->where(function (Builder $query) use ($id) {
                            return $query->where('product_id', $id);
                        })],
                    "items.*.price" => 'required|numeric',
                    "items.*.purchase_limit_qty" => 'required|numeric',
                    "items.*.inventory_qty" => 'required|numeric',
                    "status" => "required",
                    "is_pick_up" => "boolean",
                    "is_ship" => "boolean",
                    "start_ship_time" => "required|date",
                    "stop_ship_time" => "required|date",
                    "user_id" => "required",
                ];
        }

        return $rules;
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!