Symfony2 APYDataGridbundle ManyToMany

时间:2015-01-02 11:23:14

标签: php symfony datagrid many-to-many

我正在使用Symfony2和APYDataGridBundle。 我在电影和流派之间有多对多的关系:

/**
* 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;

在我的Genres课程中:

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

它工作正常,但是,对于每部电影的每个类型,都会显示不同的行。我想得到一个显示所有类型的专栏。

我得到: (第1行)7 /Bandeàpart/ Drama (第2行)7 /Bandeàpart/ Commedy

但是我希望看到一个包含所有类型的数组: (行)7 /Bandeàpart/ Drama,喜剧

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

你有没有尝试过:
@GRID\Column(field="genres.genre:GroupConcat", title="Genre", filter="select", selectMulti="true")
并为源添加groupBy:
@GRID\Source(columns="id, genres.genre:GroupConcat", groupBy={"id"})

如果GroupConcat无法开箱即用,则必须按APYDataGridBundle DQL function notation documentation

中所述添加学说扩展名

我建议:https://github.com/beberlei/DoctrineExtensions