我正在学习Magento,尤其是模型和ORM的工作原理。
据我所知,有模型(实际实体),资源模型(直接与数据库适配器链接)和集合(它们是容纳模型集合的容器)。
为什么那么,有大量的代码和示例使用Mage::getResourceModel()
而不仅仅是Mage::getModel()
- 特别是在抓取集合时,Mage::getResourceModel('catalog/product_collection')
。
我能看到的唯一原因是Mage::getModel()
必须在某个时刻通过资源模型,因此直接进入资源模型可能更有效。但是,这不是一种不好的做法吗?
答案 0 :(得分:6)
据我所知,Magento的所有藏品都是资源模型。它们由Mage::getResourceModel()
或Mage::getModel()->getCollection()
实例化。你使用哪种功能并不重要;后者只是称第一个。 Magento团队只是选择将集合作为资源的一部分,可能是因为集合需要对数据库进行大量查询。通常,您不必为集合之外的任何其他内容调用Mage::getResourceModel()
。
答案 1 :(得分:0)
<强>法师:: getResourceModel()强>
据我所知,Magento的所有藏品都是资源模型。它们由
实例化Mage :: getResourceModel()
或
<强>法师:: getModel() - &GT; getCollection()强>
使用哪种功能并不重要;后者只是称第一个。 Magento团队只是选择将集合作为资源的一部分,可能是因为集合需要对数据库进行大量查询。通常,您不必为集合之外的任何其他内容调用Mage :: getResourceModel()。