Php 条令2查询生成器计数一对多关系
我有以下疑问:Php 条令2查询生成器计数一对多关系,php,symfony,doctrine-orm,query-builder,Php,Symfony,Doctrine Orm,Query Builder,我有以下疑问: $em = $this->getEntityManager(); $query = $em->createQueryBuilder()->select('shoppingcart') ->from("AppMainBundle:ShoppingCart", 'shoppingcart') ->innerJoin('shoppingcart.shoppingCartProducts',
$em = $this->getEntityManager();
$query = $em->createQueryBuilder()->select('shoppingcart')
->from("AppMainBundle:ShoppingCart", 'shoppingcart')
->innerJoin('shoppingcart.shoppingCartProducts', 'shoppingcartproduct')
->innerJoin('shoppingcartproduct.product', 'product')
->innerJoin('shoppingcartproduct.productAttribute', 'productattribute')
->innerJoin('product.shop', 'shop')
;
如何编写where语句,其中我只想获取包含多个shoppingcart产品的shoppingcart?以下是购物车和购物车产品的关系:
class ShoppingCart
{
/**
* @var integer $id
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToMany(targetEntity="ShoppingCartProduct", mappedBy="shoppingCart", cascade={"persist","remove"})
*/
protected $shoppingCartProducts;
}
尝试添加以下行
->addSelect('COUNT(shoppingcartproduct) as nProducts')
->addGroupBy('shoppingcart.id')
->having('nProducts > 1')
如何从查询结果中访问“N产品”?这里我对查询对象使用getResult()。$result[0]将是Shoppingcart,$result['nProducts']=123;如果查询应该返回一个对象数组,而实际的产品数量无关紧要,那么select子句应该是
COUNT(shoppingcardproduct)AS HIDDEN nProducts
。