[英]Symfony2 using Query builder to load a specific ManyToMany object
我的產品可以有很多類別。 但是,在對象的一部分中,我需要獲取特定的類別。 因此,除了獲取所有類別,然后在for循環中搜索特定類別之外,我只需要獲取此特定類別。 為此,我正在使用查詢生成器。
public function findProduct($id) {
$qb = $this->createQueryBuilder('p')
->addSelect(array('p', 'cat')) // many to many table
->addSelect(array('p', 'category')) // the category entity
->leftJoin('p.category', 'cat')
->leftJoin('cat.category', 'category')
->andWhere("category.id = 15") // error here
->SetParameter('id', $id);
return $qb->getQuery()->getOneOrNullResult();
}
通過此查詢,我可以輕松地執行$ product->getCategory[0]
(由於數組為[])並僅獲取我需要的類別(在此示例中,id = 15)
問題:
但是,如果產品沒有具有特定ID的類別。則返回整個產品為null。
所以,如果我這樣做:
$product = $em->getRepository('MpShopBundle:Product')->findProduct($id); = null
但是它應該是這樣的:
$product = $em->getRepository('MpShopBundle:Product')->findProduct($id); = object
$product->getCategory() = null
如何在查詢生成器中進行這項工作? 那有可能嗎?
這應該工作。 而不是約束整個查詢(實際上是這樣做的),而是約束聯接)。
leftJoin('cat.category','category','WITH','category.id = 15')
這樣,僅當id == 15時,您才應該始終獲得商品和類別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.