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

如何通过Shopware 6 Admin API PHP SDK创建含媒体的商品

如何用Shopware 6 Admin API PHP SDK关联媒体到商品

要把上传的媒体资源关联到商品,核心是先完成媒体上传并获取有效ID,再通过Shopware要求的关联结构把媒体绑定到商品上,具体操作如下:

1. 上传媒体并获取媒体ID

先通过uploadMediaFromUrl完成媒体上传,注意提前生成合法的$mediaId(用Uuid::randomHex()生成),上传完成后这个ID就是可用的媒体记录ID:

use Symfony\Component\Uid\Uuid;

// 生成唯一媒体ID
$mediaId = Uuid::randomHex();
// 从指定URL上传媒体文件
$mediaService->uploadMediaFromUrl($mediaId, $url, 'jpg', 'test-media');

2. 关联媒体到商品

创建商品时,media字段需要传入关联数组结构,不能直接传媒体对象或单一ID。你可以在结构里指定媒体ID、排序位置、是否为主图等属性:

$productRepository->create([
    'id' => Uuid::randomHex(),
    'name' => 'New Product',
    'taxId' => $product->taxId,
    'price' => $product->price,
    'productNumber' => $product->productNumber . random_int(10, 1000),
    'stock' => $product->stock,
    'media' => [
        [
            'mediaId' => $mediaId, // 填入刚才上传得到的媒体ID
            'position' => 1, // 媒体在商品图中的排序位置,1为首位
            'visible' => true,
            'main' => true // 设置该媒体为商品主图(可选)
        ]
    ]
], $context);

额外说明

  • 若要关联多个媒体,只需在media数组中添加更多子项即可,每个子项对应一个媒体记录
  • 确保媒体上传完成后记录已成功创建,再执行商品关联操作,避免因媒体未同步导致关联失败
  • 如果是更新已有商品的媒体,使用productRepository->update()方法,传入商品ID和media字段的更新结构即可,逻辑与创建时一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:05:44