Qual è l'equivalente ORM Magento di "SELECT DISTINCT attributo DA prodotti"?


8

Devo recuperare un elenco di tutti i valori utilizzati per uno specifico attributo del prodotto, in (pseudo) SQL:

SELECT DISTINCT attribute FROM products;

Come utilizzare Magento ORM per generare una query equivalente? Ho provato la distinct()funzione ma non funziona come mi aspetto:

// Returns an array of NULL with a length equal to all products in the catalog
Mage::getModel('catalog/product')->getCollection()
            ->addAttributeToSelect('attribute')
            ->distinct(true)
            ->getColumnValues('attribute');

Quello che sto lavorando per ottenere sarebbe una matrice di attributevalori, senza duplicati

array('some value', 'some other value', 'a really common value', 'etc...');

Stai cercando valori per tutti i tipi di attributi? o drop down?
Rabea,

Risposte:


1

Grazie a Kalpesh, questo è già bloggato:

http://ka.lpe.sh/2011/06/06/magento-get-all-the-values-of-a-magento-eav-for-a-particular-attribute-code/

$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'color'); //here, "color" is the attribute_code
$allOptions = $attribute->getSource()->getAllOptions(true, true);
foreach ($allOptions as $instance) {
    $myArray[$instance['value']] = $instance['label'];
}
Mage::log($myArray);

Ecco un'altra soluzione: https://stackoverflow.com/a/15509714/1480397

Ma non sono sicuro che funzioni con attributi non selezionati.


Sì, funzionerà solo per gli attributi select, ma per quelli è la strada da percorrere.
Fabian Schmengler,

1

È possibile inviare qualsiasi istruzione SQL direttamente attraverso la connessione per acquisire dati non accessibili tramite l'API di Magentos.

$db_resource = Mage::getSingleton('core/resource');
$db_connection = $db_resource->getConnection('core_write');
$sql = sprintf("SELECT DISTINCT attribute FROM `%s`", $db_resource->getTableName('product'));
$dataset = $db_connection->fetchAll($sql);

Le funzioni di query sono fetchRow e fetchAll e sono strutturate:

fetchAll ($ strutturato_sql, $ bind_filters = array (), $ fetchMode = null)

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.