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には「1つのモジュール、1つのデータクラス」構造はありません。代わりに、1つのモジュールに多くの異なるモデルが含まれる場合があります。各モデルクラスは単一のテーブルにアクセスします。

つまり、コード生成ツールは、次のような3つのクラスを提供します。

Package_Support_Model_Support                             //model
Package_Support_Model_Resource_Mysql4_Support             //model resource
Package_Support_Model_Resource_Mysql4_Support_Collection  //collection

これらの3つのクラスは、Magentoで単一のモデルを構成するものです。

したがって、support1が必要な場合は、さらに3つのクラスが必要になります

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 に答える