избегать дублирования во многих отношениях - Doctrine DQL - PullRequest
0 голосов
/ 13 декабря 2018

noob alert;

У меня есть Post и Tag Подобные сущности:

Post.php

 /**
 * Many posts can have many tags. This is the owning side.
 * @ORM\ManytoMany(targetEntity="Tag", inversedBy="posts")
 * @ORM\JoinTable(name="post_tag")
 */
 protected $tags;

Tag.php

 /**
 * Many tags can belong to many different posts. This is the inverse side
 * @ORM\ManytoMany(targetEntity="Post", mappedBy="tags")
 */
 protected $posts;

Теперь я хочу запросить все сообщения с их тегами.

Для этого я использую queryBuilder в своем репозитории и могу успешно получать результаты.

$query = $this->createQueryBuilder('P')
        ->select('P.title, T.name')
        ->leftJoin('P.tags', 'T')
        ->where('P.id = 1')
        ->getQuery()
        ->execute();

Но, как вы можете себе представить, этот запрос выбирает дубликаты.Итак, если бы у меня было два тега для сообщения, в массиве было бы два похожих сообщения.

Output

array(
  array(title=>'Post One', name=>'php'),
  array(title=>'Post One', name=>'python'),
)

Существует ли доктринальный способ превратить эти теги всобрать массив и заполнить его обратно в окончательный массив записей.

...