「SELECT DISTINCT attribute FROM products」に相当するMagento ORMとは何ですか?


8

(疑似)SQLで、特定の製品属性に使用されるすべての値のリストを取得する必要があります。

SELECT DISTINCT attribute FROM products;

Magento ORMを使用して同等のクエリを生成するにはどうすればよいですか?distinct()関数を試してみましたが、期待どおりに動作しません。

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

私が取得しようとしているのはattribute、重複のない値の配列です

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

すべてのタイプの属性の値を探していますか?またはドロップダウン?
Rabea

回答:


1

kalpeshのおかげで、これは既にブログに投稿されています。

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

ここに別のソリューションがあります:https : //stackoverflow.com/a/15509714/1480397

しかし、これが非選択属性で機能するかどうかはわかりません。


はい、select-attributesでのみ機能しますが、これらの方法で実行できます。
Fabian Schmengler、2015

1

接続を介してSQLステートメントを直接送信して、magentosのAPIを介してアクセスできないデータを取得できます。

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

クエリ関数はfetchRowおよびfetchAllであり、構造化されています。

fetchAll($ structured_sql、$ bind_filters = array()、$ fetchMode = null)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.