2011-11-11 8 views
5

Attualmente sto imparando Magento e in particolare come funzionano i modelli e l'ORM.Magento - Quando utilizzare Mage :: getResourceModel

Per quanto posso capire ci sono modelli (che sono le entità effettive), modelli di risorse (che si collega direttamente con l'adattatore del database) e collezioni (che sono contenitori per contenere collezioni di modelli).

Perché, quindi, c'è una tonnellata di codice ed esempi che utilizzano lo Mage::getResourceModel() anziché solo Mage::getModel() - in particolare quando si acquisisce una raccolta, ad esempio Mage::getResourceModel('catalog/product_collection').

L'unica ragione che posso vedere sarebbe che Mage::getModel() dovrebbe passare attraverso il modello di risorsa a un certo punto, quindi potrebbe essere più efficiente andare direttamente al modello di risorse. Tuttavia, non è questa cattiva pratica?

risposta

6

Per quanto ne so, tutte le raccolte in Magento sono modelli di risorse. Sono istanziati da Mage::getResourceModel() o Mage::getModel()->getCollection(). Non importa quale funzione usi; quest'ultimo chiama semplicemente il primo. Il team di Magento ha semplicemente scelto di rendere le collezioni parte della risorsa, probabilmente perché le raccolte hanno bisogno di interrogare il database molto. Di solito, non devi chiamare Mage::getResourceModel() per nient'altro che le raccolte.

0

Mage :: getResourceModel()

Per quanto ne so, tutte le collezioni di Magento sono modelli di risorse. Essi sono istanziati da

Mage :: getResourceModel()

o

Mage :: getModel() -> GetCollection()

Realmente non importa quale funzione usate; quest'ultimo chiama semplicemente il primo. Il team di Magento ha semplicemente scelto di rendere le collezioni parte della risorsa, probabilmente perché le raccolte hanno bisogno di interrogare il database molto. Di solito, non dovrai chiamare Mage :: getResourceModel() per nient'altro che le raccolte.

Problemi correlati