Magento: Mage:: getModel ('catalog/category') → load ($ id) не работает

Mage:: getModel ('catalog/category') → load ($ id) не работает (данные не загружаются, а getId() пуст).

но если я это сделаю:

     $collection = Mage::getModel('catalog/category')->getCollection();
     foreach($collection as $category) {
         if($category->getId() == $id) {
             echo "it has been founnnd!!!";

         }
     }

работает?

Я должен упомянуть, что я запускаю этот код через cli с помощью тестов phpunit, чтобы он был загружен. Я предполагаю, что может возникнуть проблема с областью?

Ответ 1

Я думаю, что проблема должна быть в ваших модульных тестах или где-то еще.

Mage::getModel('catalog/category')
  ->setStoreId($store_id)
  ->load($id);

отлично работает для меня, независимо от того, использую ли я PHP apache, apache2handler, cgi, cgi-fcgi или cli SAPI и независимо от того, какая версия Magento (CE 1.3, 1.5, 1.6 и EE 1.11) Я пробовал.

Ответ 2

Что я заметил (да, через 3 года):

1) Категория не будет загружаться, если вы включили категории плоских таблиц, а индексы не обновлены

2) Категория не загружается, если она не включена в "Категория по умолчанию"

Ответ 3

Возможно, использовались таблицы с плоской категорией и индекс не обновлялся. См. Статью статьи из шторма алан.

Ответ 4

Я надеюсь, что это определенно сработает,

$categoryId = 3;
$category = Mage::getModel('catalog/category')
                ->setStoreId(Mage::app()->getStore()->getId())
                ->load($categoryId);