2012-08-26 101 views
2

有沒有辦法通過Title字段中包含的字符串的長度來排列此查詢?訂購按字符串的長度

$query = $this->getEntityManager() 
     ->createQuery(' 
    SELECT b FROM AcmeTestBundle:Blog b 
    WHERE b.Title LIKE :title' 
    )->setParameter('title','%'.$title.'%'); 

ORDER BY b.Title.length()似乎不工作。

+0

它是否給一個錯誤,還是隻是無法獲得正確的效果呢? –

+0

'按長度排序(b.Title)'? – meze

+0

謝謝@meze,但這不起作用:-( – Mick

回答

5

是的,只是嘗試:

$query = $this->getEntityManager()->createQuery('SELECT LENGTH(b.Title) l, b FROM AcmeTestBundle:Blog b WHERE b.Title LIKE :title ORDER BY l')->setParameter('title','%'.$title.'%'); 
+3

@帕特它確實,但你可能需要升級到Doctrine 2.2+並改變查詢一下:LENGTH(b.Title)作爲隱藏l。否則你需要清理結果。 – meze