我目前正在学习Magento,尤其是模型和ORM的工作方式。

据我所知,有模型(是实际的实体),资源模型(直接与数据库适配器链接)和集合(它们是容纳模型集合的容器)。

为什么会有大量使用Mage::getResourceModel()而不是Mage::getModel()的代码和示例-特别是在获取集合(即Mage::getResourceModel('catalog/product_collection'))时。

我能看到的唯一原因是Mage::getModel()必须在某个时候通过资源模型,因此直接进入资源模型可能会更有效。但是,这是不好的做法吗?

最佳答案

据我所知,Magento中的所有集合都是资源模型。它们由Mage::getResourceModel()Mage::getModel()->getCollection()实例化。您使用哪种功能并不重要;后者简单地称为第一个。 Magento团队只是选择将集合作为资源的一部分,这可能是因为集合需要大量查询数据库。通常,除了集合之外,您无需调用Mage::getResourceModel()

10-05 23:44