我正在将SF2.1与Doctrine2
一起使用我有这样的模型:
第1条。 * articleCategory * .1类别
在我的类别实体中,我想获取与$ this,orderby agrats.ed and interict.prent.pluply.plye true的所有文章,
我可以做:
$articles = array();
foreach($this->getArticleCategory() as $art_cat){
$article = $art_cat->getArticle();
if($article->isPublished()) $articles[] = $article;
}
,但它不会处理订单,无论如何看起来太重了...
学说收集的标准更加适当,但我看不到如何处理关系表,
我不想在存储库中这样做,因为它涉及特定类别,
对我有什么提示?
如果文章有:
/**
* @ORMManyToMany(targetEntity="Category", inversedBy="articles")
*/
private $categories;
和类别具有:
/**
* @ORMManyToMany(targetEntity="Article", mappedBy="categories")
*/
private $articles;
(假设有一个Artend_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();
将带来由$ cattoryId确定的类别的已发表文章,按创建日期排序。