通常我们使用Mage::getModel('catalog/product')->getCollection()能够获取到产品集。
在这个产品集中,只包含了table catalog_product_entity
中的字段,但是很多时候我们都需要更多的字段,比如产品price,qty等;
一般情况下,我们会这样做:
- $collection = Mage::getModel('catalog/product')->getCollection();
-
- $collection->addAttributeToSelect('filedname');//通过验证,此处添加这一行不起作用
-
- foreach($collection->getAllIds() as $id){
-
- $prod= Mage::getModel('catalog/product')->load($id)->getData();//此时的prod包含了EAV模型中的所有属性
-
- }
实际上,上面虽然能获取产品的所有属性,但是在你的product有上万条的时候,就会严重影响性能了。或许你会说用下边的code也可以:
- $collection->addExpressionFieldToSelect('filedname', "{{filedname}}", array('filedname' => 'filedname'));
- $collection->getSelect()->joinLeft('tablename','e.entity_id=`tablename`.entity_id','');
不错,虽然可以得到你想要的属性,但是这仅仅限于系统属性,如qty,因为我们知道qty是存储于table cataloginventory_stock_item中的,但是
magento中又很多自定义属性,是采用EAV模型存储的,所以上面的方法也不可行了。
还好有 joinAttribute joinField这两个function解决了上面的问题。
比如我想将name添加到collection中
- $collection->joinAttribute('name','catalog_product/name', 'entity_id', 'entity_id','left', 0);
就可以了,将qty添加到collection中
- $collection->joinField('qty', 'cataloginventory/stock_item','qty','product_id=entity_id', '{{table}}.stock_id=1','left');
就可以了。
joinAttribute 用来添加EAV模型中的Attribute ,只要在table eav_attribute中能找到的attribute_code都可以在这里使用!
分享到:
相关推荐
magento中文用户指南
3 专业与社群支援不像是其他的开放原始码解决方案, Magento 提供专业、可信赖的支援,您也可以从热情的社群中取得协助,国内也有Magento的爱好者创建中文社区,比如Magentoo.com。4 完整的扩充性无论网站经过了一夜...
magento中文手册 magento教程
像是产品标签、多送货地址或产品比较系统等功能,您不需要支付额外的费用来取得,在现成的 Magento 系统中,您可以发现更多。 3 专业与社群支援 不像是其他的开放原始码解决方案, Magento 提供专业、可信赖的支援...
Magento 2的Dmatthew_AttributeDescription模块这是一个Magento 2模块,它增加了向产品属性添加描述的功能。 将描述添加到可配置属性,并将其显示在您的产品视图页面上。 使用属性描述可以帮助向客户解释复杂的属性...
有magento大师编写的免费magento中文开发教程。
magento中文操作手册,详细介绍magento的具体操作
magento最新版中文语言包 Magento (麦进斗) 是一套专业开源的电子商务系统。Magento设计得非常灵活,具有模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。其面向企业级应用,可处理各方面的需求,...
magento 官方中文语言包
magento用户中文操作手册,学习magento后台管理
magento中block应用 magento中block应用 magento中block应用
本文档提供了创建和 Magento的应用程序进行安装定制的店面主题的说明。它描述 Magento的内容呈现过 程,并说明该系统的对有效地建立一个主题要求的范围内的观点层。该文件还走过日常前端开发人员的任 务。
magento中文用户指南,描述magento开发和配置过程
magento1.6.1简体中文语言包最新
在Magento教程中用到的模块 Configviewer Layoutviewer Helloworld with Custom System Config 其他与Magento开发相关的文章 简单的EAV数据查询 清除缓存的几种方法 通过命令行来升级Magento MAGENTO数据转移 ...
magento用户中文操作手册,学习magento后台管理
最新magento 商城中文语言包,翻译全面,支持最新magento 1.6
这是零基础进入到magento开发最佳文档,吐血推荐,这些文档80% 都是自己实践 开发时 整理出来的 难免有些错误的地方,欢迎帮忙指出。
magento数据结构分析 magento数据字典