2013-03-04 27 views
1

我在CakePHP模型關聯中遇到困難。我之前沒有使用過OOP或MVC,而且我發現它有點棘手。請幫我用我的CakePHP模型關係

以下是我有:

Clubs 

系統上的用戶是 「俱樂部」。在舞廳裏有各個領域,包括主要聯絡人 - clubs.club_primary_contact_id

Teams 

俱樂部可以有與之相關聯的一個或多個團隊。與俱樂部一樣,球隊也有主要聯繫人 - teams.team_primary_contact_id。團隊也有一個類型,並鏈接到類型表 - teams.type_id。通過球隊與俱樂部掛鉤。俱樂部可以有一個或多個與他們相關聯的聯繫人。經由contacts.club_id連接到球杆

Types 

types.id和types.type_name

我希望能夠訪問俱樂部/視圖/ x和顯示頁面示出以下內容:

  • 俱樂部主要聯絡人姓名/電子郵件
  • 所有俱樂部接觸
  • 所有的俱樂部隊,包括團隊主要聯絡人姓名/電子郵件

TeamsController的添加/編輯/刪除功能正常工作 - 即我可以調用聯繫人列表&類型並在視圖窗體的選擇框中顯示這些類型。

我無法從俱樂部模式訪問了這一切,雖然整齊。

我在這裏有什麼關聯?這就是我目前在模特班裏所擁有的。

應用/型號/ Club.php

public $hasMany = array(
    'Team' => array(
     'className' => 'Team', 
     'foreignKey' => 'club_id' 
    ), 
    'Contact' => array(
     'className' => 'Contact', 
     'foreignKey' => 'club_id', 
     'order' => 'contact_name DESC' 
     ) 
); 

public $belongsTo = array (
    'ClubPrimaryContact' => array(
     'className' => 'Contact' 
    ) 
); 

應用/型號/ Team.php

public $belongsTo = array (
    'TeamPrimaryContact' => array(
     'className' => 'Contact' 
    ), 
    'Club', 
    'Type' 
); 

應用/型號/ Contact.php

public $hasManyAndBelongsTo = array(
    'Team' => 
     array(
      'className' => 'Team' 
     ) 
); 

應用/型號/ Type.php

public $belongsTo = array (
    'Team' => array(
     'className' => 'Team' 
    ) 
); 

回答

0

堅持公約會有點幫助在這裏。

如果你想俱樂部屬於接觸 - 給它一個CONTACT_ID並設置在俱樂部模式聯繫一個belongs_to的關係。你需要給這種關係不同的別名到HAS_MANY關係別名 - 所以像:

public $belongsTo = array(
     'Leader' => array(
      'className' => 'Contact' 
     ) 
    ); 

同樣的團隊,定義belongs_to的,用於與別名的領導者CONTACT_ID,和常規的has_many關係的聯繫人。

然後,在查詢時 - 您需要設置足夠高的遞歸以獲得所有結果,或者一旦您完成了工作,使用可包含的行爲來優化查詢。

然後,只需查詢按正常&使用debug()看到陣列結構返回

+0

設置遞歸是我的問題。我之前並沒有真正理解這方面的內容。謝謝! – gazareth 2013-03-05 21:09:59