2012-03-25 61 views
1

我有我的DB 3個用戶表:hasOne亞型介紹CakePHP

  • Users
  • users_twitter
  • users_web

用戶既users_twitterusers_web的父母。

然後再用另一張表進行評論。這兩種用戶都可以發表評論。

所以,當我想要顯示評論時,我需要獲取每條評論作者的信息。 爲了做到這一點,我現在用的變量$belongsTo/Model/Comment.php這樣的:

public $belongsTo = array(
    'users' => array(
     'foreignKey' => 'idUser' 
    ) 
); 

在控制器/ CommentController,當我這樣做:

public function index($idPost) { 
    $this->Comment->recursive = 0; 
    return $this->Comment->find('all'); 
} 

我得到這個類型的數組:

[0] => Array 
     (
      [Comment] => Array 
       (
        [id] => 1 
        [idPost] => 441 
        [idUser] => 387371023 
        [comment] => hello word 
        [created] => 2012-03-01 00:00:00 
       ) 

      [User] => Array 
       (
        [id] => 1 
        [username] => myname 
       ) 
     ) 

我想要的是獲取更多信息,但用戶的子類型之一,取決於子類型表上的ID的存在。

在情況下,它是一個user_web表的ID,我希望得到這樣的:

[0] => Array 
     (
      [Comment] => Array 
       (
        [id] => 1 
        [idPost] => 441 
        [idUser] => 387371023 
        [comment] => hello word 
        [created] => 2012-03-01 00:00:00 
       ) 

      [User] => Array 
       (
        [id] => 1 
        [username] => myname 
        [users_web] => Array 
         (
          [id] => 1 
          [username] => myName 
          [password] => XXXXX 
          [verified] => 1 
          [created] => 1 
         ) 
     ) 

你知道這是可能的CakePHP的? 據我所知,與$hasOne我只得到一個級別,我需要兩個。

回答

0

在你AppModel添加

public $actsAs = array('Containable'); 

在你指數:

public function index($idPost) { 
    return $this->Comment->find('all', array(
     'contain' => array('User.UsersWeb'))); 
} 

您的用戶模型必須與一個UsersWeb模型,使這項工作相關。

查看http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html#containing-deeper-associations的完整說明。

此外,爲什麼你返回控制器索引中的數據?你在使用requestAction嗎?爲什麼你不使用分頁?你真的想在一個頁面上顯示數百條評論嗎?

請參閱http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html

+0

感謝它的工作! 關於爲什麼我返回它,它只是爲了這個例子。我通常使用$ this-> set;) – Alvaro 2012-03-25 18:21:19