2011-08-18 125 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

愿原力与你同在老乡的面包! :)遏制是真棒功能。 –