2012-03-22 11 views
10

Mage :: getModel ('catalog/category') -> load ($ id) no funciona (no hay datos cargado, y getId() está vacío).

pero si hago esto:

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

     } 
    } 

funciona?

Debo mencionar que estoy ejecutando este código a través de cli con pruebas de phpunit para que se arranque. ¿Supongo que podría haber un problema con el alcance?

Respuesta

15

Creo que el problema debe ser con las pruebas de su unidad o en otro lugar.

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

funciona perfectamente bien para mí, no importa si utilizo de apache, apache2handler, cgi PHP, cgi-fcgi o cli SAPI y no importa qué versión de Magento (CE 1.3, 1.5, 1.6 y EE 1,11) he intentado .

+0

funciona incluso sin "-> setStoreId ($ store_id)" – Pascut

2

Tal vez se usaron tablas de categorías planas y el índice no está actualizado. Consulte esto article de alan storm.

3

Lo que noté (sí, después de 3 años) es que:

1) Categoría no cargará si tiene categoría tablas planas habilitados y los índices no estén al día

2) Categoría no lo hará carga si no es en "Categoría por defecto"

2

espero que sin duda funciona,

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