2012-01-28 53 views
2

我有3個表:用戶,配置文件和帖子。CakePHP與3個表的關聯

用戶可能有一個配置文件和配置文件必須有一個用戶,一個帖子必須有一個用戶,和用戶可能有很多帖子。我已經在我的模型中設置了這一切,似乎一切正常。

但是觀看的帖子,我想顯示存儲在配置表中作者姓名列表時。但它是鏈接的用戶和張貼表,然後用戶錶鏈接到配置文件表。所以他們在郵政和簡介之間沒有直接關係。

我如何獲得這些信息?

我目前正試圖與視圖來顯示這一點:<?php echo $post['Profile']['firstname']; ?>但由於其是後之間沒有直接的關聯,並簡介它不工作,我得到的錯誤:Undefined index: Profile

我試圖做:

public function index() 
    { 
     $this->Post->recursive = 2; 
     $this->set('posts', $this->paginate('Post')); 
    } 

但仍然沒有運氣讓其他的協會來通過!

任何人都可以幫忙嗎?由於

回答

0

有兩種方法可以做到這一點。完成此操作的一種方法是join tables on the fly。另一種方法是使用containable behaviour

要(如果你經常使用它或AppModel)使用中可容納的行爲必須添加var $actsAs = array('Containable');所涉及的所有型號。然後你可以像這樣的控制器:

$post = $this->Post->find('first', array(
     'conditions' => array('id' => $id), 
     'contain' => array('User' => 'Profile')   
    )); 

從視圖中,您可以使用<?php echo $post['User']['Profile']['firstname']; ?>

+0

給了我這個錯誤:'錯誤:SQLSTATE [42S22]:列未找到:1054未知列「郵報」在'where clause'中 – Cameron 2012-01-28 12:19:03