从Doctrine中的逆对象中获取多对多关联的计数,而不进行逆映射

时间:2016-05-17 20:53:18

标签: symfony doctrine-orm doctrine dql

在Doctrine DQL中,我试图从多对多关联中获取计数而没有我正在使用的实体进行逆映射。

$this->getEntityManager()->createQueryBuilder()
    ->select('a AS attribute')
    ->addSelect('COUNT(p) AS num_products')
    ->from('VendorAttributeBundle:Attribute', 'a')
    ->leftJoin('VendorProductBundle:Product', 'p', 'WITH', 'a MEMBER OF p.attributes')
    ->groupBy('a.id');

以上运行,但0字段返回num_products

1 个答案:

答案 0 :(得分:0)

最后,我继续创建逆映射。我不能没有它。

供参考:

Attribute实体中:

/**
 * @var ArrayCollection
 *
 * @ORM\ManyToMany(targetEntity="Vendor\ProductBundle\Entity\Product", mappedBy="attributes")
 */
private $products;

Product实体中:

/**
 * @var ArrayCollection
 *
 * @ORM\ManyToMany(targetEntity="Vendor\AttributeBundle\Entity\Attribute", inversedBy="products")
 */
private $attributes;

然后以下工作:

$this->getEntityManager()->createQueryBuilder()
    ->select('a AS attribute')
    ->addSelect('COUNT(p) AS num_products')
    ->from('VendorAttributeBundle:Attribute', 'a')
    ->leftJoin('VendorProductBundle:Product', 'p')
    ->groupBy('a.id');