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?

War es hilfreich?

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 erstellt eav_attribute Tisch.
  • Die Ausnahme:Für das Vertriebsmodul: addColumn Und addAttribute 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 mussten addAttribute.Ab 1.4 sind die Verkaufseinheiten flach, sodass Sie sie verwenden müssen addColumn.Aber aus Gründen der Abwärtskompatibilität gilt ab Version 1.4 addAttribute ist nur ein Wrapper für addColumn.
  • 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
scroll top