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?
È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top