在Symfony2中使用KnpPaginatorBundle对ManyToOne关系进行排序

时间:2012-04-25 15:36:18

标签: symfony doctrine-orm bundle jquery-ui-sortable many-to-one

我在Symfony2项目中使用KnpPaginatorBundle。我有两个实体,有很多关系。

/**
 * @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]

有没有办法使用bar.name来使foo中的bar可以排序?

干杯

2 个答案:

答案 0 :(得分:2)

您必须在要提供给KnpPaginatorBundle的查询中加入表格

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

现在您可以使用以下内容进行排序:

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

答案 1 :(得分:0)

我相信sortable需要一个标签和一列。所以你可能正在寻找

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