0

「menu_items」と「articles」に関連するテーブル「menu_items_articles」があります。「articles」テーブルには、「tags」および「menu_items」との HABTM 関係があります

ここで、特定の menu_tems.id とそれに関連する「タグ」を持つすべての「記事」を取得したいと考えています。

「記事」に 4 つのタグがある場合、配列は記事を 4 回カウントします。関連するすべてのタグを含む記事を 1 回欲しいです。記事に関連付けられているタグは 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

これは Join では普通のことです - 「グループ」オプション (MySQL では GROUP BY) を追加するだけです。

于 2012-11-14T21:42:06.163 に答える