Вы на самом деле делаете это правильно.Однако, поскольку 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 делал все возможное, чтобы сбить вас с толку.Это очень хорошо.