0

我有一个与“menu_items”和“articles”相关的表“menu_items_articles”。'articles' 表与 'tags' 和 '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');
4

1 回答 1

0

这对于连接来说是正常的——只需添加一个“组”选项(MySQL 中的 GROUP BY)。

于 2012-11-14T21:42:06.163 回答