我正在使用带有Doctrine2的SF2.1
我有一个这样的模型:
第1条。* ArticleCategory * .1类别
在我的类别实体中,我希望获得与$ this相关的所有文章,orderBy article.created以及article.published为true,
我能做到:
$articles = array();
foreach($this->getArticleCategory() as $art_cat){
$article = $art_cat->getArticle();
if($article->isPublished()) $articles[] = $article;
}
但它不会处理订单,反正看起来太重了......
来自Doctrine Collection的标准更合适但我不知道如何处理关系表,
我不想在存储库中执行此操作,因为它涉及特定的类别
对我有任何暗示吗?
答案 0 :(得分:0)
如果文章有:
/**
* @ORM\ManyToMany(targetEntity="Category", inversedBy="articles")
*/
private $categories;
和类别有:
/**
* @ORM\ManyToMany(targetEntity="Article", mappedBy="categories")
*/
private $articles;
(假设有一个article_category连接表,根据Doctrine标准)
然后:
$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标识的类别的已发布文章,按创建日期排序。