首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento:何时单独使用Mage::getResourceModel()

Magento:何时单独使用Mage::getResourceModel()
EN

Stack Overflow用户
提问于 2012-08-15 04:41:01
回答 2查看 2.2K关注 0票数 1

除了使用集合之外,是否有任何情况需要Magento开发人员使用Mage::getResourceModel()

我已经在Magento上开发了一段时间了,还没有遇到需要单独使用Mage::getResourceModel()的情况。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-15 05:18:26

当您使用不属于标准CRUD模式的模型/资源模型对,并且希望直接调用资源模型的公共方法时。

在代码库中有几个这样的例子(我想不到)

代码语言:javascript
复制
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')
票数 2
EN

Stack Overflow用户

发布于 2012-08-15 05:24:33

当你只想获得一个资源模型实例时,你应该使用getResourceModel (这也是对集合的某种优化,但是集合是资源模型,这真的很愚蠢)。例如,要获取资源模型,您可以使用:

代码语言:javascript
复制
Mage::getModel('my_module/path_to_resource_model');

此代码创建名为My_Module_Model_Path_To_Resource_Model的模型。但这不是一个好的解决方案,因为您可以在config.xml中指定资源模型类前缀(例如,在Mage_Cms中):

代码语言:javascript
复制
............................................
        <models>
            <cms>
                <class>Mage_Cms_Model</class>
                <resourceModel>cms_mysql4</resourceModel>
            </cms>
            <cms_mysql4>
<!-- ----> --> <class>Mage_Cms_Model_Mysql</class>
............................................

但是当您使用Mage::getResourceModel时,系统会读取资源模型类前缀(并且您将来可以更改它)。因此,第一个代码片段可以重写为:

代码语言:javascript
复制
Mage::getResourceModel('my_module/model');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11960395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档