Symfony2 APYDataGridbundle ManyToMany

Я работаю с Symfony2 и APYDataGridBundle.
У меня есть много-много отношений между объектами Film и Genre:

/**
* Film
*
* @ORM\Table(name="Film")
* @ORM\Entity(repositoryClass="Filmoteca\FilmoBundle\Repository\FilmRepository")
* @GRID\Source(columns="id, genres.genre")
*/

class Film
{

/**
* @var \Filmoteca\FilmoBundle\Entity\Genre
*
* @ORM\ManyToMany(targetEntity="Genre", inversedBy="films")
*          @ORM\JoinTable(name="genre_films")
*
* @GRID\Column(field="genres.genre", title="Genre", filter="select", selectMulti="true)
**/
private $genres;

И в моем классе Жанры:

/**
* @ORM\ManyToMany(targetEntity="Film", mappedBy="genres")
**/
private $films;

Работает нормально, но для каждого жанра каждого фильма показывается отдельная строка. Я хотел бы получить колонку, которая показывает все жанры.

Я получил:
(row1) 7 / Bande à part / Драма
(row2) 7 / Bande à part / Commedy

Но хотелось бы увидеть массив со всеми жанрами:
(строка) 7 / Bande à part / Драма, Комедия

Есть идеи?
Спасибо!

0

Решение

Ты пробовал:
@GRID\Column(field="genres.genre:GroupConcat", title="Genre", filter="select", selectMulti="true")
и добавьте groupBy для источника:
@GRID\Source(columns="id, genres.genre:GroupConcat", groupBy={"id"})

Если GroupConcat не работает «из коробки», необходимо добавить расширение доктрины, как описано в Документация нотации функции DQL APYDataGridBundle

Я предлагаю : https://github.com/beberlei/DoctrineExtensions

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]