1

Mage::getResourceModel()コレクションを使用する場合を除いて、Magento 開発者が を使用する必要がある状況はありますか?

Mage::getResourceModel()私はしばらくの間 Magento で開発を行ってきましたが、独自に使用する必要がある状況にまだ遭遇していません。

4

2 に答える 2

2

標準の CRUD パターンに当てはまらないモデル/リソース モデルのペアを使用していて、リソース モデルのパブリック メソッドを直接呼び出したい場合。

コードベースでのこれからのいくつかの例(頭のてっぺんから)

Mage/Admin/Model/Session.php
100:                $this->setAcl(Mage::getResourceModel('admin/acl')->loadAcl());
138:            $this->setAcl(Mage::getResourceModel('admin/acl')->loadAcl());

Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main.php
179:        $configurable = Mage::getResourceModel('catalog/product_type_configurable_attribute')
191:            $nodeChildren = Mage::getResourceModel('catalog/product_attribute_collection')
233:        $collection = Mage::getResourceModel('catalog/product_attribute_collection')
243:        $attributes = Mage::getResourceModel('catalog/product_attribute_collection')
于 2012-08-14T21:18:25.500 に答える
0

リソース モデル インスタンスのみを取得する場合に使用する必要がgetResourceModelあります (これもコレクションのある種の最適化ですが、コレクションがリソース モデルであることは本当にばかげています)。たとえば、リソース モデルを取得するには、次を使用できます。

Mage::getModel('my_module/path_to_resource_model');

このコードは、 name のモデルを作成しますMy_Module_Model_Path_To_Resource_Model。ただし、config.xml 内でリソース モデル クラスのプレフィックスを指定する可能性があるため (たとえば、Mage_Cms のように)、これは適切な解決策ではありません。

............................................
        <models>
            <cms>
                <class>Mage_Cms_Model</class>
                <resourceModel>cms_mysql4</resourceModel>
            </cms>
            <cms_mysql4>
<!-- ----> --> <class>Mage_Cms_Model_Mysql</class>
............................................

ただしMage::getResourceModel、システムを使用すると、リソース モデル クラスのプレフィックスが読み取られます (後で変更できるようになります)。したがって、最初のコード スニペットは次のように書き換えることができます。

Mage::getResourceModel('my_module/model');
于 2012-08-14T21:24:33.270 に答える