0
<?php Mage::getModel('catalog/category')->getCollection()->addFieldToFilter('children_count','0'); ?>

产生:

Fatal error: Call to a member function getBackend() on a non-object in app\code\core\Mage\Eav\Model\Entity\Abstract.php on line 816

我错过了什么?

我在未修改的 1.7 安装示例数据上部署代码

4

2 回答 2

1

在安装了示例数据 Magento 和基本 Magento 之后,如果未启用平面类别,则此代码似乎仅在示例数据版本上产生错误。

于 2012-05-25T17:37:00.520 回答
0

我会用另一种方式来回答你的问题。

问题是因为没有产品属性children_count,它可能是您的示例 magento 站点中不存在的特定属性。

要开发该部分,最好在添加过滤器之前先检查属性是否存在,以防止代码在大多数 magento 站点中工作。

检查属性是否存在:

	/**
	 * Check if attribute exists before add it to product filter
	 */
	private function _checkIfAttributeExists ($attribCode) {
		$entity = 'catalog_product';
		$attr = Mage::getResourceModel('catalog/eav_attribute')
					->loadByCode($entity, $attribCode);
		
		if ($attr->getId()) {
		    return true;
		}
		
		return false;
	}

这样就可以消除胎儿错误:

if ($this->_checkIfAttributeExists('children_count')) {
   Mage::getModel('catalog/category')->getCollection()->addFieldToFilter('children_count','0');
}

这可能对其他人有帮助。

于 2016-05-04T07:39:25.573 回答