Ich habe die Codebasis für Magento 2 untersucht und versucht herauszufinden, wie Sie die Reihenfolge steuern können, in der Upgrade-Setup-Klassen zwischen Setup-Versionen ausgeführt werden. Trotzdem stecke ich fest. Was mein Graben angeht, konnte ich keine Möglichkeit finden, die Reihenfolge der Schema- / Daten-Upgrades in meinem Modul zu steuern.
Nehmen wir an, ich veröffentliche ein Modul, um einen kleinen Kontext zu geben. Im Laufe der Zeit veröffentlichen wir Updates. Angenommen, ich habe die folgende Dateistruktur:
Setup/InstallPostSchema.php
Setup/CreateAuthorsTableSchema.php
Setup/AddAuthorIdColumnToPostSchema.php
In diesem Fall möchte ich vorher Setup/CreateAuthorsTableSchema.php
laufen Setup/AddAuthorIdColumnToPostSchema.php
.
Meine Frage ist, wie sollen / sollen wir damit umgehen?
In Magento 1.x hat die Dateinamenskonvention dies für uns behandelt: upgrade-1.0.0-1.1.0.php
zum Beispiel.
Frameworks wie Laravel oder Rails (und andere, da bin ich mir sicher) verwenden einen Zeitstempel-Ansatz. Sie verfügen jedoch auch über eine Migrationstabelle, in der Sie über jede bisher ausgeführte Migration informiert werden. Ermöglicht auch ein einfaches Zurückrollen.
Aktualisieren
Ich habe ein Beispiel für die Verwaltung der Versionierung innerhalb des Magento/Customer
Moduls gefunden:
public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
if (version_compare($context->getVersion(), '2.0.0.1') < 0) {
// Changes here.
}
if (version_compare($context->getVersion(), '2.0.1', '<')) {
// Changes here
}
$setup->endSetup();
}