2012-04-25 73 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 }}>