2011-11-11 17 views
5

Estoy aprendiendo Magento actualmente y, en particular, cómo funcionan los modelos y el ORM.Magento: cuándo usar Mage :: getResourceModel

Por lo que puedo ver hay Modelos (que son las entidades reales), Modelos de recursos (que se vincula directamente con el adaptador de base de datos) y Colecciones (que son contenedores para contener colecciones de modelos).

¿Por qué, entonces, hay un montón de código y ejemplos que usan el Mage::getResourceModel() en lugar de solo Mage::getModel(), especialmente cuando se toma una colección, es decir, Mage::getResourceModel('catalog/product_collection').

La única razón que puedo ver es que Mage::getModel() tendría que pasar por el modelo de recurso en algún momento, por lo que puede ser más eficiente ir directamente al modelo de recurso. Sin embargo, ¿no es esta mala práctica?

Respuesta

6

Hasta donde yo sé, todas las colecciones en Magento son modelos de recursos. Se crean instancias por Mage::getResourceModel() o Mage::getModel()->getCollection(). Realmente no importa qué función uses; el último simplemente llama al primero. El equipo de Magento simplemente eligió hacer que las colecciones formen parte del recurso, probablemente porque las colecciones necesitan consultar mucho la base de datos. Por lo general, no tendrá que llamar al Mage::getResourceModel() para nada más que colecciones.

0

Mago :: getResourceModel()

Por lo que yo sé, todas las colecciones de Magento son modelos de recursos. Ellos son instanciados por

Mago :: getResourceModel()

o

Mago :: getModel() -> getCollection()

Realmente no importa qué función tu usas; el último simplemente llama al primero. El equipo de Magento simplemente eligió hacer que las colecciones formen parte del recurso, probablemente porque las colecciones necesitan consultar mucho la base de datos. Por lo general, no tendrá que llamar a Mage :: getResourceModel() para nada más que colecciones.

Cuestiones relacionadas