我有一个自定义模块Account_Register。我正在创建一个名为company_details
的自定义表。我的config.xml
是 -
--
<global>
<models>
<register>
<class>Account_Register_Model</class>
<resourceModel>register_mysql4</resourceModel>
</register>
<register_mysql4>
<class>Account_Register_Model_Mysql4</class>
<entities>
<register>
<table>company_details</table>
</register>
</entities>
</register_mysql4>
</models>
<resources>
<register_setup>
<setup>
<module>Account_Register</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</register_setup>
<register_write>
<connection>
<use>core_write</use>
</connection>
</register_write>
<register_read>
<connection>
<use>core_read</use>
</connection>
</register_read>
</resources>
</global>
---
帐户/注册/型号/ CompanyDetails.php
class Account_Register_Model_CompanyDetails extends Mage_Core_Model_Abstract
{
public function _construct()
{
parent::_construct();
$this->_init('register/company_details');
}
}
帐户/注册/型号/ Mysql4 / CompanyDetails.php
class Account_Register_Model_Mysql4_CompanyDetails extends Mage_Core_Model_Mysql4_Abstract
{
public function _construct()
{
$this->_init('register/company_details', 'company_details_id');
}
}
和帐户/注册/模型/ Mysql4 / CompanyDetails / Collection.php
class Account_Register_Model_Mysql4_CompanyDetails_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
public function _construct()
{
parent::_construct();
$this->_init('register/company_details');
}
}
我不明白这里出了什么问题。 任何帮助表示赞赏。
感谢。
答案 0 :(得分:0)
$this->_init('register/company_details');
就是问题所在。
最后,这行代码将为您提供Mage::getResourceSingleton('register/company_details')
。
这意味着Magento将在 config.xml中找到的节点<models>
之后解析 config.xml 节点<register>
。
然后它将查看定义的<resourceModel>
,因为它正在寻找ResourceSingleton。
在 config.xml 中查找register_mysql4
,然后查看具有相同名称(<register_mysql4>
)的节点和其下方的<class>
节点。
此处一切正常,Magento现在可以理解register
的{{1}}部分等于register/company_details
。
然后它只会大写Account_Register_Model_Mysql4
中的每个字:company_details
。
剩下要做的就是连接所有内容并用下划线Company_Details
替换斜杠/
。
因此它会获得类_
,然后它可以映射到 Account_Register_Model_Mysql4_Company_Details
文件。
这就是它无法找到您的文件的原因。
根据您的实际实施,您实际应该做的是
app/code/the_code_pool_given_by_the_module/Account/Register/Model/Mysql4/Company/Details.php
$this->_init('register/companydetails');
,Account_Register_Model_CompanyDetails
和Account_Register_Model_Mysql4_CompanyDetails
中的(不要忘记Account_Register_Model_Mysql4_CompanyDetails_Collection
中应该是数据库表主键的第二个参数)