2012-01-28 77 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