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

基于attribute_set_id将inventory属性合并至options集合的技术问询

解决方案:将Inventory属性合并到Options集合中

问题分析

需要基于attribute_set_id,把inventory中的attributes(仅保留name字段)合并到对应的options条目里,同时完整保留options原有的所有字段(如attribute_set_id、name、position)。

修正后的实现代码

// 初始化处理后的options,保留原字段并初始化attributes数组
$processedOptions = [];
foreach ($item->options as $option) {
    // 将对象转为数组(若$option是对象类型,否则可直接使用)
    $optionData = (array)$option;
    $optionData['attributes'] = [];
    // 用attribute_set_id作为键,便于后续快速匹配
    $processedOptions[$option->attribute_set_id] = $optionData;
}

// 遍历inventory中的属性,匹配到对应option并添加
foreach ($item->inventory as $inventory) {
    foreach ($inventory->attributes as $attribute) {
        $setId = $attribute->attribute_set_id;
        if (isset($processedOptions[$setId])) {
            // 仅保留name字段,贴合期望结果结构
            $processedOptions[$setId]['attributes'][] = [
                'name' => $attribute->name
            ];
        }
    }
}

// 转回索引数组,保持与原options相同的结构
$finalOptions = array_values($processedOptions);

// 查看最终结果
dd($finalOptions);

原代码存在的问题说明

  1. 丢失原option字段:原代码仅保留了name字段,丢失了attribute_set_id、position等原有属性
  2. 属性结构不符合预期:直接存入完整的attribute对象,而需求仅需要name字段
  3. 数组结构异常:用attribute->id作为attributes数组的键,导致生成关联数组,而期望是索引数组

结果验证

执行上述代码后,$finalOptions的结构将完全匹配你给出的期望结果:每个options条目保留所有原字段,并按attribute_set_id正确关联对应属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:20:35