2011-11-11 33 views
5

現在Magento、特にモデルとORMの仕組みを学んでいます。Magento - Mage :: getResourceModelを使用する場合

モデル(実際のエンティティ)、リソースモデル(データベースアダプタと直接リンクする)、コレクション(モデルのコレクションを保持するためのコンテナ)があります。

なぜ、Mage::getModel()の代わりにMage::getResourceModel()を使用するコードと例がたくさんありますか?特にコレクションを取得するときは、具体的にはMage::getResourceModel('catalog/product_collection')です。

私には、Mage::getModel()がある時点でリソース・モデルを調べなければならないという唯一の理由があるため、リソース・モデルに直接行く方が効率的かもしれません。しかし、これは悪い習慣ではありませんか?

答えて

6

私が知る限り、Magentoのすべてのコレクションはリソースモデルです。それらはMage::getResourceModel()またはMage::getModel()->getCollection()によってインスタンス化されます。どの機能を使用するかは重要ではありません。後者は単に最初のものを呼び出します。 Magentoチームは単にコレクションにリソースの一部を加えることを選択しました。おそらく、コレクションはデータベースに多くのクエリを実行する必要があるからです。通常、コレクション以外にはMage::getResourceModel()に電話する必要はありません。

0

メイジ:: getResourceModel()

は、私の知る限りでは、Magentoの中のすべてのコレクションには、リソース・モデルです。彼らは

メイジによってインスタンス化されている:: getResourceModel()

または

メイジ:: getModel() - > getCollection()

はそれが本当に機能するのは問題ではありません。あなたが使う;後者は単に最初のものを呼び出します。 Magentoチームは単にコレクションにリソースの一部を加えることを選択しました。おそらく、コレクションはデータベースに多くのクエリを実行する必要があるからです。通常、コレクション以外にMage :: getResourceModel()を呼び出す必要はありません。

関連する問題