Magento ORM tương đương với thuộc tính của CHỌN DISTINCT TỪ các sản phẩm là gì?


8

Tôi cần truy xuất danh sách tất cả các giá trị được sử dụng cho một thuộc tính sản phẩm cụ thể, trong (giả) SQL:

SELECT DISTINCT attribute FROM products;

Làm cách nào để sử dụng ORM Magento để tạo một truy vấn tương đương? Tôi đã thử distinct()chức năng nhưng nó không hoạt động như tôi mong đợi:

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

Những gì tôi đang làm việc để có được sẽ là một mảng các attributegiá trị, không có sự trùng lặp

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

Bạn đang tìm kiếm giá trị cho tất cả các loại thuộc tính? hay thả xuống?
Rabea

Câu trả lời:


1

Nhờ kalpesh, điều này đã được viết blog:

http://ka.lpe.sh/2011/06/06/magento-get-all-the-values-of-a-magento-eav-for-a-particular-attribution-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);

Đây là một giải pháp khác: https://stackoverflow.com/a/15509714/1480397

Nhưng tôi không chắc chắn, liệu điều này có hoạt động trên các thuộc tính không chọn.


Vâng, nó sẽ chỉ hoạt động cho các thuộc tính chọn lọc, nhưng đối với đó là cách để đi.
Fabian Schmengler

1

Bạn có thể gửi bất kỳ câu lệnh SQL nào thông qua kết nối để có được bất kỳ dữ liệu nào không thể truy cập được thông qua api của 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);

Các hàm truy vấn là fetchRow và fetch ALL và được cấu trúc:

fetch ALL ($ structured_sql, $ bind_filters = mảng (), $ fetchMode = null)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.