与KnpPaginatorBundle排序在多对一关系的Symfony2(Sort over Man

2019-09-16 18:20发布

我在一家Symfony2的项目中使用KnpPaginatorBundle。 我有2个实体具有多对一的关系。

/**
 * @ORM\Entity
 * @ORM\Table(name="foo")
 */
class foo {
   ...

   /**
     * @ORM\ManyToOne(targetEntity="abc\DemoBundle\Entity\Bar")
     * @ORM\JoinColumn(name="bar_id", referencedColumnName="id")
     */
    protected $bar;

    ...
}

/**
 * @ORM\Entity
 * @ORM\Table(name="bar")
 */
class Bar {
   ...

    /**
     * @ORM\Column(type="string", length=50, nullable=true)
     */
    protected $name;

    ...
}

现在我想用KnpPaginatorBundle排序

<{{  entities.sortable('bar', 'i.bar')|raw }}

我得到以下错误消息

There is no such field [bar] in the given Query component, aliased by [i]

有没有什么办法,使在FOO酒吧排序使用bar.name?

干杯

Answer 1:

你必须加入你给到KnpPaginatorBundle查询表

SELECT i
FROM abc\DemoBundle\Entity\Bar i
JOIN i.bar b 

现在,您可以用下面的排序:

<{{  entities.sortable('bar', 'b.name')|raw }}>


Answer 2:

我认为,排序需要一个标签和一列。 所以,你可能寻找

<{{ entities.sortable('Name', 'i.name')|raw }}


文章来源: Sort over ManyToOne Relationship with KnpPaginatorBundle in Symfony2