一千萬個為什麽

搜索

如何在Magento中對集合進行排序?

我正在嘗試通過 attribute_id 對集合進行排序。我覺得這很容易,但我想我沒有正確使用它:

$attributes =  Mage::getResourceModel('eav/entity_attribute_collection')
    ->setOrder('attribute_id');
echo $attributes->getSelect();

結果:

SELECT `main_table`.* FROM `eav_attribute` AS `main_table`

為什麽沒有訂單?

最佳答案

你實際上是以正確的方式做到這一點。但是,由於Magento使用EAV,它需要應用技巧來幫助提高性能。

其中一個技巧是用於構建最終SQL字符串的時間。通常它會在最後一刻延遲加載,直到您實際指示要訪問集合的數據,才能看到用於生成集合的完整SQL。例如,運行代碼,但提示magento實際構造和加載集合,產生預期的輸出。

$attributes =  Mage::getResourceModel('eav/entity_attribute_collection')
    ->setOrder('attribute_id');
$attributes->count();//forces the collection to load
echo $attributes->getSelect()->assemble();

這導致SQL:

SELECT `main_table`.* FROM `eav_attribute` AS `main_table` ORDER BY attribute_id DESC

所以你走在了正確的道路上,只是Magento正在盡最大努力讓你迷惑。它非常擅長。

轉載註明原文: 如何在Magento中對集合進行排序?