Attribut backend_type = statisch?

23

Kann jemand die Wichtigkeit / Relevanz der backend_type Statik für ein Attribut erklären ?

Ich habe einige Probleme mit einem nicht geladenen Attribut und frage mich, ob dies backend_typeirgendetwas damit zu tun hat.

Hat dies auch etwas mit dem zu tun, was auf den flachen Tischen steht?

Marty Wallace
quelle

Antworten:

37

Statische Attribute sind Attribute , die in der Haupttabelle eines Unternehmens gespeichert - für Katalog - Produkte catalog_product_entity. Beispielsweise ist das Attribut skuvon Katalogprodukten definiert als static. Statische Attribute werden immer von Magento geladen und sind besonders nützlich, wenn Sie Informationen schnell abrufen oder die Suche nach Daten optimieren möchten. Ein Nachteil dieser Art von Attributen ist, dass Sie keine speicherspezifischen Werte haben können, was einer der Vorteile des Magento EAV-Systems ist.

Selbst wenn Sie ein Attribut als definieren static, wird es von Magento nicht als solches behandelt, es sei denn, Sie haben eine entsprechende Spalte in der Hauptentitätstabelle. Wenn die Spalte nicht vorhanden ist, behandelt Magento das Attribut als varcharstandardmäßig und sucht es in der varchar EAV - Tabelle für die Modell - für Produkte, catalog_product_entity_varchar.

Wenn Sie statische Attribute in Ihrem Projekt verwenden möchten, müssen Sie zwei Dinge in Ihren Installations- / Upgrade-Skripten tun. Zunächst müssen Sie der Hauptentitätstabelle eine Spalte mit der richtigen Spaltendefinition hinzufügen. Als Nächstes müssen Sie Ihr Attribut mithilfe der addAttribute()Methode installieren und als Attribut definieren static. Bitte lesen Sie die Installationsskripte von, Mage_Catalogum besser zu verstehen, wie die Dinge in diesem Fall funktionieren.

Wenn Sie häufig Abfragen basierend auf Ihren benutzerdefinierten statischen Attributen ausführen möchten, sollten Sie einen Index für die neue Spalte hinzufügen, um das Abrufen von Daten zu beschleunigen.

fmrng
quelle
1
category_ids ist statisch. Es befindet sich nicht in der Tabelle catalog_product_entity_varchar.
Ahnbizcad
summary: static bedeutet, dass der Wert eine Spalte in ist catalog_product_entity, andernfalls wird catalog_product_entity_varchar eingecheckt.
Ahnbizcad
1

Hier ist das Beispiel aus dem Kern:

$installer->run("
    ALTER TABLE `{$installer->getTable('catalog/product')}` ADD `has_options` SMALLINT(1) NOT NULL DEFAULT '0';
");

$installer->addAttribute('catalog_product', 'has_options', array(
    'type' => 'static',
    'visible'=>false,
    'default' => false
));
Roman Snitko
quelle
1
Was hat das mit der Frage zu tun?
Marius
@Marius Dies ist nur ein Beispiel für das Hinzufügen eines statischen Attributs.
Roman Snitko
Angenommen, Sie fügen die Spalte über MySQL direkt zur Datenbank hinzu. Wie können Sie den TYP eines vorhandenen Produktattributs in STATIC ändern? Frage: Könnten wir einfach type = static in einer bestimmten Tabelle aktualisieren und es würde funktionieren?
snh_nl