2011-08-18 168 views
1

我有一點更復雜的系統...... 我有的CakePHP的hasMany - 屬於關聯 - 的hasMany關係

  • 用戶模型 - 的hasMany廣告
  • 廣告模式 - 的hasMany 「placads」
  • placads模型 - 屬於關聯廣告和地點
  • 地方模型 - 的hasMany placads

現在我運行這樣的查詢:

$this->set(
     'ad', 
     $this->User->Ad->find(
      'all', 
      array(
       'conditions' => array('Ad.user_id' => $this->Auth->user('id')) 
      ) 
     ) 
    ); 

,我在*標記得到這個沒有「地方」

[0] => Array 
    (
     [Ad] => Array 
      (
       [id] => 1 
       [user_id] => 1 
       [name] => bota 
      ) 

     [Placad] => Array 
      (
       [0] => Array 
        (
         [id] => 1 
         [ad_id] => 1 
         [place_id] => 1 
         [count] => 10 
         *[Place] => Array 
         (
          info about place 
         )* 
        ) 

       [1] => Array 
        (
         [id] => 2 
         [ad_id] => 1 
         [place_id] => 2 
         [count] => 20 
         *[Place] => Array 
         (
          info about place 
         )* 
        ) 

      ) 

    ) 

我應該怎麼做來得到類似我寫入*號?

在此先感謝!

回答

4

使用遞歸:

http://book.cakephp.org/view/1063/recursive

$this->User->Ad->recursive = 2; // before find 

交替:

$this->User->Ad->find('all', 
    array(
     'recursive' => 2, 
     'conditions' => array('Ad.user_id' => $this->Auth->user('id')) 
    ) 
) 

2號是一個例子,但在你的情況

第二替代應該做的:

使用中可容納

http://book.cakephp.org/view/1323/Containable

+0

願原力與你同在老鄉的麪包! :)遏制是真棒功能。 –