Magento在单个模块中的多个模型

时间:2012-10-05 14:02:39

标签: magento magento-1.7

加载第二个模型处理带模块的数据库时遇到问题 我有1个控制器ValidateController和2个扩展Main的模型Mage_Core_Controller_Front_Action,因此我无法与数据库通信,以及与数据库通信的Log

当我致电$log = Mage::getModel('modulex/log');时,它很好,它为get_class($log)提供了正确的路径,但是当我致电$log->load($params['id']);时,它未能给我这个错误:

Warning: include(Companyx/Modulex/Model/Resource/Main.php) [function.include]: failed to open stream: No such file or directory

我不明白为什么它会给我这个错误,它应该调用Resource/Log.php存在。

我告诉你我的config.xml

<frontend>
    <routers>
        <modulex>
            <use>standard</use>
            <args>
                <module>Companyx_Modulex</module>
                <frontName>modulex</frontName>
            </args>
        </modulex>
    </routers>
</frontend>
<global>
    <models>
        <modulex>
            <class>Companyx_Modulex_Model</class>
            <resourceModel>modulex_resource</resourceModel>
        </modulex>
        <modulex_resource>
            <class>Companyx_Modulex_Model_Resource</class>
            <entities>
                    <log>
                            <table>companyx_modulex_logs</table>
                    </log>
            </entities>
        </modulex_resource>
    </models>
</global>

感谢您的帮助!

====编辑解决方案====
使用此代码

创建/resource/Main.php
class Companyx_Modulex_Model_Resource_Main extends Mage_Core_Model_Resource_Db_Abstract
{
    protected function _construct()
    {
        $this->_init('modulex/log', 'id');
    }
}

我的错误在于$this->_init('modulex/main', 'id');

1 个答案:

答案 0 :(得分:0)

您收到的错误消息我相当清楚,找不到资源模型。 Magento将模型分解为基本上是2层系统。一层用于处理业务逻辑,另一层用于处理持久性/数据库交互。在模型上调用load时,会将其代理到为您的类指定的资源模型。在您的配置中,此资源正在设置为Companyx_Modulex_Model_Resource_Main.php,但您似乎在该类的定位位置没有文件 - app/code/{codepool}/Companyx/Modulex/Model/Resource/Main.php