2012-04-25 62 views
4

我在Symfony2项目中使用KnpPaginatorBundle。我得到了2个具有manytoOne关系的实体。在Symfony2中排序ManyToOne与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] 

排序有没有什么办法让foo中排序栏使用bar.name?

干杯

回答

0

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

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

,你必须参加的,这样赋予了KnpPaginatorBundle

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

现在查询表,你可以使用以下排序:

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