Dal:create:schema wirft Fehler aus Shopware-Plugins

Liebes Shopware-Team!
Beim Ausführen des o.g. Befehls kommt es zu verschiedenen Fehlermeldungen, die auf eure Plugins zurückzuführen sind.

  1. No primary key detected for entity: bf_support → Dort habe ich einfach in die Klasse Swag\Markets\Entity\Support\SupportDefinition ein Id-Feld hinzugefügt um den Fehler zu überspringen. → Fehler wurde durch neue Version gefixt → Danke Max_Shop
  2. Call to a member function getStorageName() on null → die Methode getStorageName() gibt es in euren Plugins SwagPublisher, SwagCommercial und SwagEnterpriseSearchPlatform. Ich habe ehrlicherweise gerade keine Zeit um den Fehler noch genauer einzugrenzen.
    Benutzt ihr eure eigenen Tools eigentlich nicht oder wieso fällt das bei euch nicht auf oder mache ich etwas falsch?

Vielen lieben Dank für eure Hilfe!
Thomas Deutschländer

1 Like

Den oder einen ähnlichen Bug habe ich vor ungefähr einem Jahr im Issue Trecker gemeldet:

Wie du bereits selbst geschrieben hast, einfach die id hinzufügen und das Problem ist gelöst.

Vielen Dank!
In der Tat war meine Plugin-Version veraltet.
Es bleibt aber Nr. 2 weiterhin offen.

Der Fehler lag eigentlich an einer unserer Entities. Dort wurde für eine Referenz zu einer anderen Entity die id, aber nicht die Version-Id mitgegeben.
Es sollte daher die Methode generateForeignKeys() der Klasse Shopware\Core\Framework\DataAbstractionLayer\SchemaGenerator
angepasst werden:
$columns = EntityDefinitionQueryHelper::escape($versionField->getStorageName());
Hier wird nicht geprüft, ob $versionField evtl null ist.

Den Fehler hatte ich auch des öfteren. Eigentlich könnte man im Core diesen Fehler überspringen oder zumindest eine aussagekräftige Exception werfen (z.B. welche entity betroffen ist). So ganz sauber funktioniert das auch noch nicht, denn wenn ich eine Tabelle mit zwei Relationen zu einem Produkt habe, brauche ich nur eine product_version_id :smiley: