2011-12-06 55 views
0

我有以下cakephp绑定关系设置。他们正在寻找,但如何获得嵌套在结果中的评论用户记录?cakephp如何做一个嵌套连接

 $this->Posts->bindModel(array(
     'hasOne' => array(
      'User' => array(
       'foreignKey' => false, 
       'type' => 'INNER', 
       'conditions' => array('Posts.user_id = Users.id') 
      ) 
     ), 
     'hasMany' => array(
      'Comment' => array(
       'foreignKey' => 'post_id', 
       'conditions' => array('Comment.active' => 1) 
      ) 
     ) 
    )); 

这个伟大工程,以得到这样的结果:

[1] => Array 
    (
     [Posts] => Array 
      (
       [title] => test post 
       [body] => test body 
       [published] => 
       [id] => 15 
      ) 

     [User] => Array 
      (
       [id] => 7 
       [username] => admin 
       [password] => d0557b9de8bb6f7fb3248a017c7b67a6 
       [email] => [email protected] 
       [group_id] => 1 
       [created] => 2011-11-21 15:19:09 
      ) 

     [Comment] => Array 
      (
       [0] => Array 
        (
         [id] => 10 
         [user_id] => 7 
         [post_id] => 15 
         [text] => testdfasdfdsfasdfasdfasdfasd 
         [active] => 1 
         [created] => 2011-12-02 20:50:57 
         [published] => 2011-12-05 13:58:25 
        ) 

       [1] => Array 
        (
         [id] => 11 
         [user_id] => 7 
         [post_id] => 15 
         [text] => this is a test comment 
         [active] => 1 
         [created] => 2011-12-02 21:31:56 
         [published] => 2011-12-03 11:34:32 
        ) 

      ) 

    ) 

我的问题是怎么也得上评论相关的用户?有没有办法在我的查询中嵌套评论和用户之间的唯一关系?

回答

0

你可以在bindModel中使用contains吗?从来没有尝试过...但值得一试。

$this->Posts->bindModel(array(
     'hasOne' => array(
      'User' => array(
       'foreignKey' => false, 
       'type' => 'INNER', 
       'conditions' => array('Posts.user_id = Users.id') 
      ) 
     ), 
     'hasMany' => array(
      'Comment' => array(
       'foreignKey' => 'post_id', 
       'conditions' => array('Comment.active' => 1), 
       'contain' => array('User'), 
      ) 
     ) 
    )); 

其实现在我读了你的问题,我不确定你想要什么。你想要这个人的评论者的user_id吗?你能否详细说明你想要多一点。