Cakephp关系不起作用

时间:2014-06-02 07:22:44

标签: cakephp-2.3

我在cakephp模型中使用关系来检索数据,在这里我想检索帖子和他们的评论,它也应该返回帖子和评论的用户详细信息,这里在选择数据的同时获取用户的详细信息只有帖子不用于评论,我还需要用户评论的数据。

如何获得评论的用户详细信息?

以下是我的发现:

$post = $this->Post->find('all',array('conditions'=>array('Post.id'=>'1')));

以下是模型:

post.php中

<?php
class Post extends AppModel {

var $name = 'Post';
var $useTable = 'posts';
var $primaryKey = 'id';

var $hasMany = array(

    'Comment' => array(
    'className' => 'Comment','limit' => 4,
            'order' => 'created ASC'));

var $belongsTo = array(
    'User'=> array ('className' => 'User',
    'foreignKey' => 'user_id')
);
}
?>

Comment.php

 <?php
 class Comment extends AppModel {

 var $name = 'Comment';
 var $useTable = 'comments';
 var $primaryKey = 'id';

 var $belongsTo = array(
    'Post'=> array ('className' => 'Post',
    'foreignKey' => 'post_id','counterCache' => true ),

    'User'=> array ('className' => 'User',
    'foreignKey' => 'user_id')
);
 }
 ?>

user.php的

 <?php
 class User extends AppModel {

 var $name = 'User';
 var $useTable = 'users';
 var $primaryKey = 'id';

 var $hasMany = array(
   'Comment' => array('className' => 'Comment',
   'Post' => array('className' => 'Post')));
  }
  ?>

1 个答案:

答案 0 :(得分:0)

尝试在find方法中使用recursive属性:

递归属性定义了CakePHP应该通过find()和read()方法获取关联模型数据的深度。

想象一下,您的应用程序具有属于某个域的组,并且拥有许多用户,而这些用户又拥有许多文章。您可以根据您希望从$ this-&gt; Group-&gt; find()调用返回的数据量,将$ recursive设置为不同的值:

-1 CakePHP仅提取组数据,没有连接。

0 CakePHP获取组数据及其域。

1 CakePHP获取一个组,其域及其关联用户

2 CakePHP获取组,其域,关联用户和用户关联文章

您的查询将变为:

$ post = $ this-&gt; Post-&gt; find('all',array('conditions'=&gt; array('Post.id'=&gt;'1'),'recursive'=&gt; X));

其中x是关联的深度级别