cakephp 2.0加入

时间:2012-11-14 21:10:38

标签: cakephp join cakephp-2.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');

1 个答案:

答案 0 :(得分:0)

这对于Joins来说是正常的 - 只需添加'group'选项(MySQL中的GROUP BY)。