加载第二个模型处理带模块的数据库时遇到问题
我有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');
。
答案 0 :(得分:0)
您收到的错误消息我相当清楚,找不到资源模型。 Magento将模型分解为基本上是2层系统。一层用于处理业务逻辑,另一层用于处理持久性/数据库交互。在模型上调用load时,会将其代理到为您的类指定的资源模型。在您的配置中,此资源正在设置为Companyx_Modulex_Model_Resource_Main.php
,但您似乎在该类的定位位置没有文件 - app/code/{codepool}/Companyx/Modulex/Model/Resource/Main.php
。