de-swebhosting-shopware-plugin/smart-relation-sync 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

de-swebhosting-shopware-plugin/smart-relation-sync

最新稳定版本:v1.1.1

Composer 安装命令:

composer require de-swebhosting-shopware-plugin/smart-relation-sync

包简介

Smart relation handling for the Sync-API

README 文档

README

The goal of this Plugin is to ease the pain of dealing with relations in Shopware.

Shopware native

Before explaining the solution in this Plugin, please be aware that there is a Shopware native way in the Sync-API to archive the same result. For example to assign a new category, you can send the following HTTP request:

POST /api/_action/sync
Content-Type: application/json

{
    "change-category": {
        "entity": "product",
        "action": "upsert",
        "payload": [
            {
                "id": "<the product id>",
                "categories": [
                    {"id": "<the new category id 1>"}
                    {"id": "<the new category id 2>"}
                ]
            }
        ]
    },
    "delete-obsolete": {
        "entity": "product_category",
        "action": "delete",
        "criteria": [
            {
                "type": "equals",
                "field": "productId",
                "value": "<the product id>"
            },
            {
                "type": "not",
                "operator": "and",
                "queries": [
                    {
                        "type": "equalsAny",
                        "field": "categoryId",
                        "value": ["<the new category id 1>", "<the new category id 2>"]
                    }
                ]
            }
        ]
    }
}

Quick start

After installing the Plugin, you can enable automatic relation cleanup in the DAL or in the Sync-API, for example:

$productData = [
    'id' => '...',
    'categories' => [['id' => '...']],
    'categoriesCleanupRelations' => true,
];
$this->productRepository->upsert([$productData], $context);
POST /api/_action/sync
Content-Type: application/json

{
    "write-product": {
        "entity": "product",
        "action": "upsert",
        "payload": [
            {
                "id": "...",
                "categories": [{ "id": "..." }],
                "categoriesCleanupRelations": true
            }
        ]
    }
}

By setting categoriesCleanupRelations to true, the plugin will automatically remove all category relations that are not in the given array.

You can do this for any many-to-many or one-to-many relation with the CleanupRelation suffix.

统计信息

  • 总下载量: 4.72k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-03-13