Mage::getModel('catalog/categy')->load($id)不工作(没有加载任何数据,getId()为空)。
但如果我这样做:
$collection = Mage::getModel('catalog/category')->getCollection();
foreach($collection as $category) {
if($category->getId() == $id) {
echo "it has been founnnd!!!";
}
}
它有效吗?
我应该提到的是,我正在通过cli和phpunit测试运行这段代码,所以它是引导的。我的猜测是范围可能有问题?
我认为问题一定出在单元测试或其他地方。
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),对我来说都非常好。
我注意到(是的,3年后):
1) 如果启用了类别平面表并且索引不是最新的,则不会加载类别
2) 如果类别未进入"默认类别",则不会加载该类别
可能使用了平面类别表,索引不是最新的。请参阅艾伦·斯托姆的这篇文章。
我希望它肯定会起作用,
$categoryId = 3;
$category = Mage::getModel('catalog/category')
->setStoreId(Mage::app()->getStore()->getId())
->load($categoryId);