1

Doctrine2でSF2.1を使用しています

私はこのようなモデルを持っています:

記事 1.* ArticleCategory *.1 カテゴリー

私の Category エンティティでは、 $this 、 orderBy article.created 、および article.published が true に関連するすべての記事を取得したいと考えています。

私はそれをできた :

$articles = array();
foreach($this->getArticleCategory() as $art_cat){
    $article = $art_cat->getArticle();
    if($article->isPublished()) $articles[] = $article;
}

しかし、それはorderByを処理しません。とにかく重すぎるようです...

Doctrine Collection の Criteria の方が適していますが、関係テーブルの処理方法がわかりません。

特定のカテゴリに関係するため、リポジトリでこれを実行したくありません。

ヒントはありますか?

4

1 に答える 1

0

記事がある場合:

/**
* @ORM\ManyToMany(targetEntity="Category", inversedBy="articles")
*/
private $categories;

およびカテゴリは次のとおりです。

/**
* @ORM\ManyToMany(targetEntity="Article", mappedBy="categories")
*/
private $articles;

(Doctrine の標準に従って、article_category 結合テーブルがあると仮定します)

それで:

$articles = $em->getRepository('AcmeBundle:Article')
        ->createQueryBuilder('a')
        ->join('a.categories', 'c')
        ->andWhere('c.id=:category_id')
        ->setParameter('category_id', $categoryId)
        ->andWhere('a.published=TRUE')
        ->orderBy('a.created')
        ->getQuery()->getResult();

$categoryId で識別されるカテゴリの公開された記事を、作成日で並べ替えます。

于 2012-11-08T19:11:22.033 に答える