Was ist das Magento ORM-Äquivalent von "SELECT DISTINCT Attribut FROM Produkte"?


8

Ich muss eine Liste aller Werte abrufen, die für ein bestimmtes Produktattribut in (Pseudo) SQL verwendet werden:

SELECT DISTINCT attribute FROM products;

Wie würde ich das Magento ORM verwenden, um eine entsprechende Abfrage zu generieren? Ich habe die distinct()Funktion ausprobiert , aber sie funktioniert nicht wie erwartet:

// 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');

Ich arbeite daran, ein Array von attributeWerten ohne Duplikate zu erhalten

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

Suchen Sie nach Werten für alle Arten von Attributen? oder Dropdowns?
— Rabea

Antworten:


1

Dank Kalpesh ist dies bereits gebloggt:

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

Hier ist eine andere Lösung: https://stackoverflow.com/a/15509714/1480397

Ich bin mir aber nicht sicher, ob dies bei nicht ausgewählten Attributen funktioniert.


Ja, es funktioniert nur für ausgewählte Attribute, aber für diese ist es der richtige Weg.
— Fabian Schmengler

1

Sie können alle SQL-Anweisungen direkt über die Verbindung senden, um Daten abzurufen, auf die über die API von magentos nicht zugegriffen werden kann.

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

Die Abfragefunktionen sind fetchRow und fetchAll und sind strukturiert:

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.