4

我在 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]

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

干杯

4

2 回答 2

2

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

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

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

<{{  entities.sortable('bar', 'b.name')|raw }}>
于 2012-07-22T09:35:19.280 回答
0

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

<{{ entities.sortable('Name', 'i.name')|raw }}
于 2012-05-03T15:10:26.290 回答