2012-04-08 114 views
1

在我的應用程序連接表,我有以下表格:設置包含在CakePHP中

Posts 
id 
title 
content 
    Users 
id 
username 
password 
    Profiles 
id 
user_id 
firstname 
lastname 
    Comments 
id 
post_id 
user_id 
content 
    Topics 
id 
title 
    Topic_Posts 
id 
topic_id 
post_id 

希望的關係相當明顯!我遇到的問題是最後一個表是關於帖子和主題之間多對多關係的連接表。我不完全確定如何設置它!

這裏是我的帖子,主題和Topics_Posts型號:

class Post extends AppModel 
{ 
    public $name = 'Post'; 

    public $belongsTo = 'User'; 

    public $hasMany = array('Comment', 'TopicPost'); 

    public $actsAs = array('Containable'); 
} 
class Topic extends AppModel 
{ 
    public $hasMany = array(
     'TopicPost' 
    ); 
} 
class TopicPost extends AppModel { 
    public $belongsTo = array(
     'Topic', 'Post' 
    ); 
} 

至於我可以告訴大家的關係是正確的?然後在我的方法,我有以下聲明:

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

所以基本上我的問題是如何將主題添加到包含,因爲我還沒有到評論和用戶添加到Post模型所以不知道爲什麼或接下來要做什麼...

另外我如何再將主題拉出來?由於我很困惑這將如何工作考慮到我連接到連接表而不是實際主題......除非我只是偏離軌道。幫助這將不勝感激。

回答

2

與你當前的設置,你可以這樣做:

'contain' => array(
    'TopicPost' => array('Topic') 
) 

也可以添加

public $hasAndBelongsToMany = array(
    'Topic' => array('with' => 'TopicPost') 
); 

Post模型。

然後你會含有像這樣:

'contain' => array(
    'Topic' 
) 
+0

真棒的偉大工程。 – Cameron 2012-04-08 20:45:14