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