Produkt um vererbbares Boolean-Feld erweitern

Ich versuche gerade ein vererbbares Boolean-Feld für Produkte einzubauen aber irgendwie funktioniert das nicht. Wenn das Plugin aktiviert ist bekomme ich vom Backend immer den Fehler

SQLSTATE[42S22]: Column not found: 1054 Unknown column ‚product.customizationExtension.parent_id‘ in ‚field list‘

Das ist meine Entity:


class ProductCustomizationEntity extends Entity
{
    use EntityIdTrait;


    public const ENTITY_NAME = 'maxim_customization_extension';

    public function getEntityName(): string
    {
        return self::ENTITY_NAME;
    }



   public function getEntityClass(): string
    {
        return ExampleEntity::class;
    } 

    protected function defineFields(): FieldCollection
    { 
        return new FieldCollection([
            (new IdField('id', 'id'))->addFlags(new Required(), new PrimaryKey()),
            new FkField('product_id', 'productId', ProductDefinition::class),
            (new BoolField('is_customizable', 'isCustomizable'))->addFlags(new Inherited()),
            new CreatedAtField(),
            new UpdatedAtField(),
            new OneToOneAssociationField('product', 'product_id', 'id', ProductDefinition::class, false),

            new ParentFkField(self::class),
            new ParentAssociationField(self::class, 'id'),
            new ChildrenAssociationField(self::class),
        ]);
    }
    

und eine Extension-Klasse:


class CustomizationExtension extends EntityExtension
{

    public const EXTENSION_NAME = 'customizationExtension';

    public function extendFields(FieldCollection $collection): void
    {
        
        $collection->add(
            (new OneToOneAssociationField(self::EXTENSION_NAME, 'id', 'product_id', CustomizationExtensionDefinition::class, true))
            ->addFlags(new Inherited())
        );
    }

    public function getDefinitionClass(): string
    {
        return ProductDefinition::class;
    }
}

und diese Migration:

class Migration1625938165Initial extends MigrationStep
{
    use InheritanceUpdaterTrait;

    public function getCreationTimestamp(): int
    {
        return 1625938165;
    }

    public function update(Connection $connection): void
    {

        //         `is_customizable`  BOOLEAN    NULL,            
        $query = <<<SQL
        CREATE TABLE IF NOT EXISTS `maxim_customization_extension` (
            `id`                INT             NOT NULL,
            `product_id`        INT             NULL,
   
            `created_at` DATETIME(3) NOT NULL,
            `updated_at` DATETIME(3),
            PRIMARY KEY (id)
        )
            ENGINE = InnoDB
            DEFAULT CHARSET = utf8mb4
            COLLATE = utf8mb4_unicode_ci;
        SQL;

        $connection->executeStatement($query);
        $this->updateInheritance($connection, 'maxim_customization_extension', 'is_customizable');
    }

Das boolean Feld wird im Query jetzt nicht eingetragen weil ich in der updateInheritance Anweisung immer den Fehler erhalten habe, dass die Spalte schon existiert.

Hallo,

ich versuche aktuell auch das Produkt mit einem OneToOneAssociationField zu erweitern und bekomme dabei den selben Fehler ausgegeben.

Habe bereits alles probiert aber keine Lösung finden können… Glaube fast schon, dass es sich hier um einen Bug im Shopware Core handelt. :thinking:

Wie hast du das Problem gelöst?

Ich habe den Fehler an Shopware gemeldet und hoffe, dass die Plugins mit der nächsten Version wieder funktionieren. :confused: