我在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')));
}
?>
答案 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是关联的深度级别