addAttribute() vs. addColumn()?
-
12-12-2019 - |
Frage
Obwohl ich mir dessen bewusst bin ähnliche Frage.Meine Frage ist allgemeiner: Was würde mit beiden Aufrufen passieren, unabhängig davon, ob ich tatsächlich eine Datenbankspalte erstelle oder nicht?
BEARBEITEN
Ich weiß addColumn()
wird eine echte Tabellenspalte hinzufügen, aber wenn ich in einige Kernmodule eintauche, rufen einige von ihnen beide auf addColumn()
Und addAttribute()
zum gleichen Feld.
Was ist der Unterschied zwischen ihnen?
BEARBEITEN 2
Weil addAttribute()
sieht für mich sehr nach EAV aus, nach einiger Recherche habe ich auch einige ähnliche Namen gefunden wie addAttributeSet()
Und addAttributeSetNames()
.
Wie unterscheiden sie sich voneinander?
Lösung
Gehen wir es Schritt für Schritt an.
addColumn
Fügt einer Tabelle eine Spalte hinzu.addAttribute
fügt ein neues Attribut für EAV-Entitäten hinzu.Es wird also ein neuer Datensatz erstellteav_attribute
Tisch.- Die Ausnahme:Für das Vertriebsmodul:
addColumn
UndaddAttribute
mach das selbe.Sie fügen einer Tabelle eine Spalte hinzu.Der Grund ist die Abwärtskompatibilität.Vor Version 1.4 waren die Verkaufseinheiten (Bestellungen, Rechnungen, Sendungen, Artikel usw.) EAV, sodass Sie sie verwenden musstenaddAttribute
.Ab 1.4 sind die Verkaufseinheiten flach, sodass Sie sie verwenden müssenaddColumn
.Aber aus Gründen der Abwärtskompatibilität gilt ab Version 1.4addAttribute
ist nur ein Wrapper füraddColumn
. addAttributeSet
wird für EAV-Entitäten verwendet und tut, was es verspricht.Es erstellt einen neuen Attributsatz für diese Entität.Ich denke, es wird nur für Produkte verwendet, da alle anderen EAV-Entitäten (Kategorie, Kunde, Kundenadresse) einen einzigen Attributsatz verwenden.addAttributeSetNames
- Ich habe nirgendwo im Kerncode ein Vorkommen davon gefunden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange