Gute Praxis in Bezug auf die Beziehungen von Kerntabellen zu Modultabellen

7

Dies ist eine Frage zur Magento-Entwicklung, die sowohl für M1 als auch für M2 gelten kann.

In den letzten Wochen habe ich an mehreren Modulen gearbeitet, die in direktem Zusammenhang mit nativen Magento-Entitäten / Datenbanktabellen stehen.

Hier ist ein Beispiel, das jedoch für mehrere Modulentwicklungsfälle gilt:

Ein Modul, mit dem Sie eine Warenkorbregel nur für einen Kunden einschränken können (beschrieben in der E-Mail).

Ich bin zu dem Schluss gekommen, dass es zwei Möglichkeiten gibt, und ich frage mich, welche die empfohlene wäre:

Erster Weg: Verwenden Sie Magento-Kerntabellen

Bearbeiten Sie niemals den Kern. Gilt das für Kerntabellen?

  • Fügen Sie emailder salesrule_ruleTabelle eine Spalte hinzu
  • Das Anwenden der Einschränkung kann erfolgen, wenn das Modell geladen wird.

Zweiter Weg: Verwenden Sie eine benutzerdefinierte Tabelle

  • Erstellen Sie eine benutzerdefinierte Tabelle mit einem benutzerdefinierten Modell salesrule_idund emailverknüpfen Sie es mit einem benutzerdefinierten Modell
  • Das Anwenden der Einschränkung kann durch einen zusätzlichen Join oder Ladevorgang (des benutzerdefinierten Modells) erfolgen.

Zurück in den Tagen habe ich immer die Kerntabellen direkt zu ändern , aber jetzt fühle ich mich nicht wie das der richtige Weg ist. Ich bin jedoch besorgt über die Leistung in Bezug auf den zweiten Weg .

Was ist der beste / empfohlene Weg, um damit umzugehen?

Raphael beim digitalen Pianismus
quelle

Antworten:

5

Dies ist rein meinungsbasiert, so dass andere in der Meinung abweichen können, aber für mich ist das Mutieren einer Kerntabelle kein Problem, solange Sie nur Spalten oder einen Index usw. hinzufügen.

Das Ändern vorhandener Spalten, das Löschen usw. kann zu unerwartetem Verhalten führen und sollte daher vermieden werden.

Wenn Sie die Spalte über das Installationsskript Ihres Moduls hinzufügen, sollte dies vollkommen in Ordnung sein. Darüber hinaus führt das Hinzufügen einer weiteren Tabelle, der Sie beitreten oder die Sie selbst abfragen müssen, zu einer Leistungseinbuße, die meiner Meinung nach eine schlechte Entscheidung darstellt.

Aber wie gesagt, das ist nur meine Meinung;)

Sander Mangel
quelle
Vielen Dank für Ihren Beitrag. Wäre es nicht ein Problem bei Magento-Upgrades?
Raphael bei Digital Pianism
1
nur wenn sie die gleiche Spalte einführen. Ich persönlich stelle allen Spalten in Kerntabellen den Modulnamen
Sander Mangel
2
Stellen Sie außerdem sicher, dass hinzugefügte Spalten ein korrektes Namenspräfix haben, damit andere Module nicht mit ihnen in Konflikt geraten.
Flyingmana