我有一个表'menu_items_articles‘,它与'menu_items’和‘文章’相关。“文章”表与“标签”和“menu_items”有一个HABTM关系。
现在我想要得到所有的‘文章’与一个特定的menu_tems.id和所有相关的‘标签’。
如果一篇‘文章’有4个标签,那么数组的数量是文章的4倍。我想1次与所有的标签相关的文章。只有一个标签与这篇文章相关
这就是我的东西
$this->MenuItemsArticle->recursive = -1;
$options['joins'] = array(
array('table' => 'articles_tags',
'alias' => 'ArticlesTag',
'type' => 'inner',
'conditions' => array(
'ArticlesTag.article_id = MenuItemsArticle.article_id'
)
),
array('table' => 'articles',
'alias' => 'Article',
'type' => 'inner',
'conditions' => array(
'ArticlesTag.article_id = Article.id'
)
),
array('table' => 'tags',
'alias' => 'Tag',
'type' => 'inner',
'conditions' => array(
'ArticlesTag.tag_id = Tag.id'
)
)
);
$options['conditions'] = array(
'MenuItemsArticle.menu_item_id' => $menu_item
);
$options['fields'] = array('DISTINCT MenuItemsArticle.*',' Article.*','Tag.*');
$this->paginate = $options;
$result = $this->paginate('MenuItemsArticle');发布于 2012-11-15 05:42:06
这对于Join来说是正常的--只需添加一个分组选项(MySQL中的'group' BY )。
https://stackoverflow.com/questions/13387380
复制相似问题