我有多种这样的习惯:
//用户模型
var $ hasMany = array('Post');
//发布模型
var $ hasAndBelongsToMany = array('Category','Tag');
//分类模型
var $ hasAndBelongsToMany = array('Post');
//标签模型
var $ hasAndBelongsToMany = array('Post');
我试图获取所有帖子及其用户和标签(在某个类别中),不知怎的,如果我获取标签,结果是错误的。
$this->paginate = array
(
'Post' => array
(
'limit' => 2,
'fields' => array(
'Post.title', 'Post.content', 'Post.slug', 'Post.created',
'Tag.name',
'User.username', 'User.created', 'User.post_count', 'User.avatar_file_name'),
'joins' => array
(
array(
'table' => 'categories_posts',
'alias' => 'CategoriesPost',
'type' => 'inner',
'conditions'=> array('CategoriesPost.post_id = Post.id')
),
// FETCH USER
array(
'table' => 'users',
'alias' => 'User',
'type' => 'inner',
'conditions'=> array('Post.user_id = User.id')
),
// FETCH TAGS
array(
'table' => 'posts_tags',
'alias' => 'PostsTag',
'type' => 'inner',
'conditions'=> array('PostsTag.post_id = Post.id')
),
array(
'table' => 'tags',
'alias' => 'Tag',
'type' => 'inner',
'conditions'=> array('Tag.id = PostsTag.tag_id')
),
array(
'table' => 'categories',
'alias' => 'Category',
'type' => 'inner',
'conditions'=> array('Category.id = CategoriesPost.category_id', 'Category.slug' => $slug)
)
)
)
);
$posts = $this->paginate();
因为我是新手,所以有人可以给我一个解决方案吗?
非常感谢...
答案 0 :(得分:1)
当尝试使用关联模型对结果集进行分页时,我遇到了类似的问题。我最终不得不手动将我的模型绑定在一起,运行查询,然后取消绑定它们,以便让Cake包含正确的数据。 (http://book.cakephp.org/view/86/Creating-and-Destroying-Associations-on-the-Fly)
您还可以尝试可包含的行为,该行为允许您指定要包含在结果集中的模型。可容纳的是1.2+(http://book.cakephp.org/view/474/Containable)的核心,否则你需要自己抓住它。
我不太清楚你为什么会有这么庞大的问题。我更倾向于做类似以下的事情。
$this->Model->recursive = 2;
$this->Model->paginate();
让Cake通过我的关联获取所有相关数据。然后我将使用条件数组(http://api.cakephp.org/class/controller#method-Controllerpaginate)调整返回值以指定类别。
对不起,这不是一个真实的解决方案,但我自己就是CakePHP业余爱好者!您可能会发现使用DebugKit http://github.com/cakephp/debug_kit
查看查询,结果等更容易