Attributo backend_type = statico?


23

Qualcuno può spiegare l'importanza / pertinenza della backend_type statica per un attributo?

Ho dei problemi con l'attributo che non viene caricato e mi chiedo se questo backend_typeabbia qualcosa a che fare con esso?

Inoltre, questo è in qualche modo correlato a ciò che viene inserito nei tavoli piatti?

Risposte:


37

Attributi statici sono attributi memorizzati nella tabella principale di un ente - per i prodotti del catalogo, catalog_product_entity. Ad esempio, l'attributo skudei prodotti del catalogo è definito come static. Gli attributi statici vengono sempre caricati da Magento e sono utili soprattutto se si desidera recuperare rapidamente le informazioni o ottimizzare la ricerca dei dati. Uno svantaggio di questo tipo di attributi è che non puoi avere valori specifici del negozio, che è uno dei vantaggi del sistema EAV Magento.

Anche se definisci un attributo come static, Magento non lo tratterà come tale a meno che tu non abbia una colonna corrispondente nella tabella delle entità principale. Se la colonna non c'è, Magento tratta l'attributo come varcharper impostazione predefinita e cerca nella tabella varchar EAV per il modello - per i prodotti, catalog_product_entity_varchar.

Se si desidera utilizzare attributi statici nel progetto, è necessario eseguire 2 operazioni negli script di installazione / aggiornamento. Innanzitutto, è necessario aggiungere una colonna alla tabella entità principale, con la definizione di colonna corretta. Successivamente, è necessario installare l'attributo utilizzando il addAttribute()metodo e definire l'attributo come static. Fare riferimento agli script di installazione di Mage_Catalogper comprendere meglio come funzionano le cose in questo caso.

Se si prevede di eseguire spesso query in base agli attributi statici personalizzati, prendere in considerazione l'aggiunta di un indice sulla nuova colonna per accelerare il recupero dei dati.


1
category_ids è statico. non è nella tabella catalog_product_entity_varchar.
ahnbizcad,

riepilogo: statico significa che il valore è una colonna in catalog_product_entitye, in caso contrario, tornerà a controllare in catalog_product_entity_varchar.
ahnbizcad,

1

Ecco l'esempio dal core:

$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
));

1
Cosa c'entra questo con la domanda?
Marius

@Marius questo è solo un esempio di come aggiungere un attributo statico.
Roman Snitko,

Supponiamo di aggiungere la colonna direttamente al DB tramite MySQL. Come è possibile modificare il TIPO di un attributo di prodotto esistente su STATICO? Domanda: potremmo semplicemente aggiornare type = static in una certa tabella e funzionerebbe?
snh_nl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.