Usando per catalog_product_index_eav per attributo personalizzato e addAttributeToFilter
-
16-10-2019 - |
Domanda
Ho aggiunto un attributo:
$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'show_in_subview', array(
'type' => 'varchar',
'label' => 'Show in Subview',
'input' => 'multiselect',
'backend' => 'eav/entity_attribute_backend_array',
'required' => 0,
'user_defined' => 0,
'visible' => 1,
'is_filterable' => 1,
'is_configurable' => 0,
'sort_order' => 14,
'source' => 'ho_subviews/attribute_source_subview',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'group' => 'General',
'used_in_product_listing' => true,
));
Come si può vedere che ho usato una fonte personalizzato per riempire il campo a più di selezione. Salvare e caricare i valori funziona come un fascino.
Filtraggio della collezione può essere fatto utilizzando: $ Collezione> addAttributeToFilter ( 'show_in_subview', array ( 'finset' => Mage :: app () -> getStore () -> getCurrentSubviewId ()));
Il problema è che la raccolta non usa gli indici in quanto il tipo di colonna non è SET ( http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_find-in-set ).
Ho notato che quando si aggiunge un campo selezione multipla normale, l'interrogazione è join sul tavolo catalog_product_index_eav che fa uso indici e quindi sarà più performante.
Io non sono esattamente sicuro dove guardare per utilizzare questa tabella pure. Sto indovinando la classe backend è responsabile di questo (che era l'unica differenza tra una goccia creata manualmente campo verso il basso o l'alto). Così EAV / entity_attribute_backend_array non utilizzare la tabella catalog_product_index_eav.
- Qual è il backend predefinito che viene utilizzato per multiselect o non c'è alcuna?
- Come posso prolungare EAV / entity_attribute_backend_array in modo che utilizza la tabella catalog_product_index_eav?
Soluzione
Alla fine ho usato un attributo predefinito di selezione multipla. Con questa soluzione ci manca un po 'di flessibilità, ma dal momento che i subviews non cambiano, che spesso non è un problema.
- L'attributo di default utilizza gli indici, che è veloce
- L'attributo di default è compatibile con il backend SOLR