Module um DB-Updates erweitern

Guten Tag,

ich nutze in meinen Modulen für die Erweiterung (bzw. Rückbau) der Datenbank während der Aktivierung (bzw. Deaktivierung) der Module die Events onActivate (bzw. onDeactivate).

Nun will ich meine eigenen Datenbank-Erweiterungen erweitern.

Ich könnte nun bei jeder Erweiterung meiner Module die Methoden onActivate und onDeactivate wiederum erweitern und jeweils neben den initialen SQLs noch Erweiterungs-SQLs ergänzen. Das macht aber meine beiden Methoden mit der Zeit immer unübersichtlicher und schwerer nachvollziehbar.

Da gefallen mir die Mechaniken für die Shop-Migrationen:
https://docs.oxid-esales.com/developer/en/6.1/oxid_components/migrations.html
Dort kann ich für jeden Migrationsfall eine neue PHP-Migrations-Rumpfdatei angelegen, die ich wiederum individuell befüllen kann. Das Ergebnis ist dann sehr gut nachvollziehbar.
Die Shop-Migrationen eignen sich allerdings nicht für allgemein anzuwendenene, shopunabhängige Modul-Migrationen.

Wie löst Ihr das Problem? Ich wäre an einer auf PHP-basierenden Lösung interessiert (also nicht ein abarbeiten von separaten SQL-Dateien). Denn ich will in den PHP-Dateien noch Bedingungen prüfen, die ich nicht in SQLs verlagern kann. Also eine ähnliche Modul-Migrations-Lösung so wie sie für den Shop existiert (s.o.).

Danke!

P.S: Ich wünsch Euch allen ein erfolgreiches neues OXID-Jahr :slight_smile:

OXID arbeitet daran dass in Zukunft auch Module eigene Migrations haben können.

Aktuell bleibt dir nichts anderes übrig als mit onActivate/onDeactivate über PHP SQL-Befehle auszuführen.

Spannendes Thema… Wäre auf jeden Fall eine Bereicherung!

Tun sie das wirklich? Ich kenne nur das hier, da hab ich mit Alfred darüber diskutiert, das in der Oxid Console zu unterstützen… https://github.com/OXIDprojects/oxid-console/issues/22 Aber im OXID “Core” wäre das natürlich noch besser …

vielleicht meinte ich auch das?! :wink:

Hallo,

wir arbeiten mit den Projekt-Migrationen (s. https://docs.oxid-esales.com/developer/en/6.1/oxid_components/migrations.html?highlight=migrations).

Mittels vendor/bin/oe-eshop-db_migrate migrations:generate PR lassen sich diese erstellen, können aber auch manuell im entsprechenden Ordner abgelegt werden. Der CI/CD Job ruft dann entsprechend vendor/bin/oe-eshop-db_migrate migrations:migrate auf, sodass die Projekt-Migrationen am Ende (nach CE, PE, EE) ausgeführt und in der DB entsprechend eingetragen werden.

@JCT: Die Lösung von @stefam, wäre schon der richtige Ansatz, denn ich will ja folgendes erreichen: Angenommen ich wäre der Entwickler des OXID-Paypal-Moduls und ich müsste ein neues DB-Feld ergänzen, weil es von Paypal ab 2021 neue Bestimmungen gibt, dann weiß ich zu dem Zeitpunkt nicht, in welchen OXID-Shops mein Modul installiert ist/ sein wird. Ich kann also die Migration nicht auf Projekt-Ebene durchführen, sondern brauche eine Lösung auf Modul-Ebene.