首页 > 解决方案 > 如何在 Shopware 6 中为 OneToOneAssociationField 使用继承的标志

问题描述

我在 ProductDefinition 中有一个新的 OneToOneAssociationField,其产品扩展名具有 Inherited() 作为附加标志。对应的 EntityDefinition 也有一个带有 ReverseInherited() 标志的 OneToOneAssociationField。如果我保存主产品,则该产品的外键“testproductextension_id”是正确填写的。但是继承列只有父元素的 id,父元素以及所有子元素都会发生这种情况。如果我现在手动将此 id 与“testproductextension_id”交换,则也会为子元素加载附加数据。这意味着,就我自己可以检测到的问题而言,不是“testproductextension_id”而是“product_id”将保存在“testproductextension”中,有谁知道为什么会发生这种情况?

//ProductExtension
    $collection->add(
        (new FkField('testproductextension_id', 'vrdataId', TestProductExtensionDefinition::class))->addFlags(new Inherited())
    );

    $collection->add(
        (new OneToOneAssociationField(
            'testproductextension',
            'testproductextension_id',
            'id',
            TestProductExtensionDefinition::class,
            false
        ))->addFlags(new Inherited())
    ); 


    //TestProductExtensionDefinition
     return new FieldCollection([
        (new IdField('id', 'id'))->addFlags(new Required(), new PrimaryKey()),
        (new StringField('testname', 'testname'))->addFlags(),

        (new OneToOneAssociationField('product', "product_id","id",ProductDefinition::class,false))
            ->addFlags(new ReverseInherited('testproductextension')),
    ]);

标签: shopware

解决方案


推荐阅读