0

次のデータ モデルがあります。投稿できるカテゴリがあります。これらの記事は、それらが属する多くのカテゴリを持つことができます。ここで、1 つのカテゴリからすべての記事を選択したいと考えています。

私がこれまでに試したことは次のとおりです。

 $qb = $this->_em->createQueryBuilder()
        ->select('c, p')
        ->from('...Blog\Category', 'c')
        ->leftJoin('c.posts', 'p')
        ->where('c.id = :id')
        ->orderBy('p.created', 'DESC')
        ->setParameter(':id', $catId);

今、私はこのクエリを、すべての投稿のリストを取得することを期待するページネーション バンドルにフィードしたいと考えています。

問題は、このクエリが「カテゴリ」オブジェクトを返すことです。

カテゴリから投稿を取得するにはどうすればよいですか?

KnpPaginatorBundle で Symfony 2 を使用しています

4

2 に答える 2

0

クエリが間違っています。左結合を行うと、左のテーブルから行が選択されます。ひっくり返すだけです。

$qb = $this->_em->createQueryBuilder()
        ->select('c, p')
        ->from('c.posts', 'p')
        ->leftJoin('...Blog\Category', 'c')
        ->where($qb->expr()->andX(
           $qb->expr()->eq('c.id', ':id'),
           $qb->expr()->eq('p.category_id', 'c.id')
         )
        ->orderBy('p.created', 'DESC')
        ->setParameter(':id', $catId);
于 2013-10-17T14:48:58.780 に答える