Я работаю с 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 / Драма, Комедия
Есть идеи?
Спасибо!
Ты пробовал:
@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
Других решений пока нет …