目前我的模型关系船以下列方式设置
class Post extends AppModel {
var $name = 'Post';
var $displayField = 'title';
var $hasMany = array('Comment');
var $belongsTo = array('User');
}
class User extends AppModel {
var $name = 'User';
var $displayField = 'username';
var $hasMany = array('Post', 'Comment');
}
class Comment extends AppModel {
var $name = 'Comment';
var $displayField = 'id';
var $belongsTo = array('User', 'Post');
}
当我尝试在我的帖子视图的评论部分中引用用户名时 它错误地说无效索引并且在进一步调整后我注意到我的模型不包括用户信息作为我的评论的后向参考仅用于帖子的用户信息
结果数组如下所示:
Array
(
[Post] => Array
(
[id] => 1
[title] => test post
[user_id] => 1
[body] => this is a test post
[date_posted] => 0000-00-00 00:00:00
[url_slug] => this-is-a-test-post
)
[User] => Array
(
[id] => 1
[username] => admin
[password] => e7b9f7bc09beee85947ef987d7df49df136c7c38
[first_name] => Chris
[last_name] => McGrath
[roles] => Admin
[email] => admin@thissite.com
[last_login] => 0000-00-00 00:00:00
[member_since] => 0000-00-00 00:00:00
[FacebookProfile] =>
[TwitterUserName] =>
)
[Comment] => Array
(
[0] => Array
(
[id] => 5
[post_id] => 1
[user_id] => 1 //expecting this to pull user model for each
[comment] => test comment
)
)
)
我的问题是,这是由于我在模型关联中做错了,这是模型框架的限制,还是应该在这种类型的实例中从用户模型中手动抓取用户
答案 0 :(得分:0)
尝试做这样的事情:
$this->Post->recursive = 2; //This will get all the comments and their relationships
$post = $this->Post->read(null,$post_id); //The way you were getting your post.
debug($post); // You will see what it gets
修改强> 你也可以试试这个:
$this->Post->Comment->recursive = 2;
答案 1 :(得分:0)
使用recursive = 2永远不是一个好主意。
$this->Post->find(
'first',
array(
'conditions' => array(
'Post.id' => $id
),
'contain' => array(
'User',
'Comment' => array(
'User' => array(
'fields' => array(
'User.id',
'User.name'
)
)
)
)
)
);