5

我需要一些帮助。我在 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');

但都失败了,这应该如何工作?

提前致谢。

4

2 回答 2

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 答案来说,细节太多了,但是如果您需要更多帮助,这是我的一篇较早的文章,其中涵盖了在没有代码创建工具的情况下从头开始创建模型。

于 2013-03-23T04:30:04.517 回答
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
于 2013-03-23T01:27:59.163 回答