我目前正在学习Magento,尤其是模型和ORM的工作方式。
据我所知,有模型(是实际的实体),资源模型(直接与数据库适配器链接)和集合(它们是容纳模型集合的容器)。
为什么会有大量使用Mage::getResourceModel()
而不是Mage::getModel()
的代码和示例-特别是在获取集合(即Mage::getResourceModel('catalog/product_collection')
)时。
我能看到的唯一原因是Mage::getModel()
必须在某个时候通过资源模型,因此直接进入资源模型可能会更有效。但是,这是不好的做法吗?
最佳答案
据我所知,Magento中的所有集合都是资源模型。它们由Mage::getResourceModel()
或Mage::getModel()->getCollection()
实例化。您使用哪种功能并不重要;后者简单地称为第一个。 Magento团队只是选择将集合作为资源的一部分,这可能是因为集合需要大量查询数据库。通常,除了集合之外,您无需调用Mage::getResourceModel()
。