Magento中如何获取所有实体属性集合?解决抽象类实例化报错
Magento获取EAV属性集合的正确方式
报错原因
用Mage::getModel('eav/attribute')->getCollection()报错,是因为Mage_Eav_Model_Attribute是抽象类,Magento不允许直接实例化抽象类,所以这种方式行不通。
无需直接写SQL,用官方集合类即可解决
直接调用EAV属性的资源集合类,就能正常获取eav_attribute表的数据:
$attributeCollection = Mage::getResourceModel('eav/attribute_collection');
你还可以像操作普通集合一样添加过滤条件,比如只获取产品相关的属性(先查eav_entity_type表确认对应实体的entity_type_id,产品一般是4):
$attributeCollection->addFieldToFilter('entity_type_id', 4); // 遍历输出属性代码 foreach ($attributeCollection as $attribute) { echo $attribute->getAttributeCode() . PHP_EOL; }
针对特定实体的快捷方式
如果只需要某类实体(比如产品、客户、分类)的属性,也可以用对应实体的属性集合,会自动过滤对应类型的属性:
- 产品属性集合:
$productAttributes = Mage::getResourceModel('catalog/product_attribute_collection');
- 客户属性集合:
$customerAttributes = Mage::getResourceModel('customer/attribute_collection');
- 分类属性集合:
$categoryAttributes = Mage::getResourceModel('catalog/category_attribute_collection');
内容的提问来源于stack exchange,提问作者Matheus Delazeri
相关产品推荐
相关产品推荐

