我需要一些帮助。我已经在magento中创建了一个需要与多个表交互的自定义模块。
我使用以下内容获取表名
<entities>
<support1>
<table>table1</table>
</support1>
<support2>
<table>table2</table>
</support2>
<support3>
<table>table3</table>
</support3>
</entities>
然后我将以下内容添加到我的模型中
public function _construct()
{
parent::_construct();
$this->_init('support/support1');
$this->_init('support/support2');
$this->_init('support/support3');
}
在mysql4文件夹中我有...
public function _construct()
{
$this->_init('support/support1', 'ticket_id');
$this->_init('support/support2', 'dept_id');
$this->_init('support/support3', 'priority_id');
}
在Collection.php中我有......
public function _construct()
{
parent::_construct();
$this->_init('support/support1');
$this->_init('support/support2');
$this->_init('support/support3');
}
所以使用
$collection = Mage::getModel('support/support')->getCollection();
如何定义对support1或support2等的访问权限。我尝试过使用...
$collection = Mage::getModel('support/support1')->getCollection();
和
$collection = Mage::getModel('support/support')->getCollection('support1');
但都失败了,这应该怎么办?
提前致谢。
答案 0 :(得分:11)
Magento没有“一个模块,一个数据类”结构。相反,单个模块可能包含许多不同的模型。每个模型类访问一个表。
因此,您的代码生成工具为您提供了三个类
Package_Support_Model_Support //model
Package_Support_Model_Resource_Mysql4_Support //model resource
Package_Support_Model_Resource_Mysql4_Support_Collection //collection
这三个类构成了Magento中的单个模型。
因此,如果你想要support1,你还需要三个类
Package_Support_Model_Support1 //model
Package_Support_Model_Resource_Mysql4_Support1 //model resource
Package_Support_Model_Resource_Mysql4_Support_Collection1 //collection
哪个会启用
Mage::getModel('support/support1');
以上代码示例从名为 support1 的支持模块获取 模型。
单个StackOverflow答案的细节太多了,但如果您需要更多帮助,那么an older article of mine涵盖了从头开始创建模型而无需代码创建工具。
答案 1 :(得分:3)
尝试创建以下文件夹结构并根据需要更新每个文件的类定义
|-/Model
|---Support1.php
|---Support2.php
|---Support3.php
|------Mysql4
|--------Support1.php
|--------Support1
|----------Collection.php
|--------Support2.php
|--------Support2
|----------Collection.php
|--------Support3.php
|--------Support3
|----------Collection.php
class <CompanyName>_<ModuelName>_Model_Support[x] extends Mage_Core_Model_Abstract
class <CompanyName>_<ModuelName>_Model_Mysql4_Support[x] extends Mage_Core_Model_Mysql4_Abstract
class <CompanyName>_<ModuelName>_Model_Mysql4_Support[x]_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract