magento开发文档(七):magento eav模型

magento开发文档(七):magento eav模型

ID:47031925

大小:89.96 KB

页数:17页

时间:2019-07-01

magento开发文档(七):magento eav模型_第1页
magento开发文档(七):magento eav模型_第2页
magento开发文档(七):magento eav模型_第3页
magento开发文档(七):magento eav模型_第4页
magento开发文档(七):magento eav模型_第5页
资源描述:

《magento开发文档(七):magento eav模型》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Magento开发文档(七):MagentoEAV模型+6Magento中文手册(七):MagentoEAV模型在第一篇介绍MagentoORM的文章中,我们提到过Magento拥有两类模型。普通的模型及EntityAttributeValue(EAV)模型。这里首先搞清楚它们之前的一些关系。所有的Magento模型都继承自Mage_Core_Model_Abstract/Varien_Object类链。真正区别普通模型和EAV模型的关键是该模型使用的模型资源(ModelResource)。尽管所有的资源类都继承自Mage_Core_Model_Resource_Ab

2、stract类,普通模型拥有继承自该类的子类Mage_Core_Model_Mysql4_Abstract,同时EAV模型拥有继承自该类的另外一个子类Mage_Eav_Model_Entity_Abstract。为什么要这样设计呢?仔细想想,不难得出结论。作为终端程序员,你需要的只是如何与数据库交互的方法,而不用在意底层是如何实现的。EAV模型这里我们引用维基百科的定义,这段暂时就不翻译了,太多术语。Entity-Attribute-Valuemodel(EAV),alsoknownasobject-attribute-valuemodelandopenschemai

3、sadatamodelthatisusedincircumstanceswherethenumberofattributes(properties,parameters)thatcanbeusedtodescribeathing(an“entity”or“object”)ispotentiallyveryvast,butthenumberthatwillactuallyapplytoagivenentityisrelativelymodest.Inmathematics,thismodelisknownasasparsematrix.在一个普通的数据库中,表中一般包含

4、多列,像下表所示,+——————+

5、products        

6、+——————+

7、product_id      

8、

9、name                  

10、

11、price                   

12、

13、etc..                     

14、+——————++————+—————-+——————+———+

15、product_id

16、name             

17、price            

18、etc… 

19、+————+—————-+——————+———+

20、1                     

21、WidgetA      

22、

23、11.34           

24、etc… 

25、+————+—————-+——————+———+

26、2                     

27、DongleB      

28、6.34             

29、etc… 

30、+————+—————-+——————+———+每个产品都有,name,price等等字段。在EAV模型中,每个模型化的实体/entity(比如说产品)拥有一系列不同的属性。EAV模型几乎可以提供给电子商务一个通用的数据库解决方案。一个出售电脑(属性:CPU速度,颜色,内存)的网店与一个出售衣服(颜色,尺码,性别)的网店对于商品属性的需要肯定大不相同。即

31、使是在电脑网店中,不同的产品对于属性的要求也有差别,如笔记本电脑(电池),台式电脑(机箱)。使用EAV模型的数据库程序,在开源及商业软件里都不多。并且多数IDC主机提供商都没有大规模采用这种数据库解决方案。因此,Magento工程师通过MySQL作为底层数据存储,用PHP实现了EAV系统。换句话说,Magento在传统关系数据库上构建了EAV数据库系统。不得不说,这是Magento对于电子商务解决方案领袖地位的体现。在实际应用中,这意味着任何使用EAV模型资源的模型,其属性都是分布在MySQL的多个表里(而非像上图中演示的普通数据库那样)。MagentoEav上图演示

32、了查询一条catalog_product(产品信息)EAV记录时,Magento所需要与数据库表进行交互的一个大概轮廓。每个产品在catalog_product_entity中有一条对应的记录。而整个系统中所有能够使用的属性(颜色,大小,等等,且不限于产品本身)都保存在eav_attribute表中,注意,该表中只是记录全局使用的属性,并不会记录任何属性值。之际的属性值分散在很多表中,例如catalog_product_entity_attribute_varchar,catalog_product_entity_attribute_decimal,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。