2014-11-14 13 views
0

我與教義的QueryBuilder工作,我需要包括我的查詢中->addOrderBy()主義SQL函數withing addOrderBY

所以initly我有這個

$qb->addOrderBy('a.weighting', 'DESC'); 

它工作得很好,但並沒有帶來預期的效果,我又回到了繪圖板,創造了新的查詢和order by部分應該是這樣的:

order by DATE_FORMAT(published_at, '%Y/%m/%d') DESC 

我試着譯吃了這種成學說的QueryBuilder,但它不工作,我可能做錯了什麼:

我的翻譯,以便通過查詢部分:

$qb->addOrderBy('DATE_FORMAT(a.published_at, %Y/%m/%d)', 'DESC'); 

我想谷歌的答案,接着主義網站:Doctrine Site

但仍然沒有運氣

回答

0

爲什麼你試圖在Doctrine中運行MySQL DATE_FORMAT?爲什麼不: $qb->addOrderBy('a.published_at', 'DESC')

+0

因爲爲了讓我檢索我需要的數據並將它按順序排列,我需要這是我需要的DATE_FORMAT(),但是不知道如何將其轉換爲DOCTRINE – Tomazi

+1

但datetime以格式Ymd存儲在數據庫中H:我:秒。因此,在該字段排序可以正常工作(如果小時產生問題,也許您應該使用日期字段類型?)。但是如果你必須使用DATE_FORMAT,你應該定義自定義的DQL函數。 http://doctrine-orm.readthedocs.org/en/latest/cookbook/dql-user-defined-functions.html –

+0

首先谷歌結果:http://www.uvd.co.uk/blog/using-mysqls- date_format-in-doctrine-2-0/ –

0

是published_at有效的日期字段嗎?此外,DATE_FORMAT會將其更改爲字符串並將其排序爲字符串。