2016-05-17 3 views
0

В Doctrine DQL я пытаюсь получить счет из ассоциации «многие-ко-многим» без сущности, с которой я работаю, с обратным отображением ,Получите количество ассоциаций от многих до многих из инверсного объекта в Doctrine, без обратного отображения

$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

Я выполнил ваш запрос на объектах с множеством ко многим, и он работает хорошо. Попробуйте найти ошибку в вашем сопоставлении. См. Мой пример https://gist.github.com/Infernosquad/cc6237e7c782892e70ba33dd36976234 –

ответ

0

В конце концов я просто пошел вперед и создал обратное отображение. Я не мог заставить его работать.


Для справки:

В Attribute Entity:

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

В Product Entity:

/** 
* @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'); 

 Смежные вопросы

  • Нет связанных вопросов^_^