2014-12-28 35 views
0

我有以下MySQL查詢,我想將其更改爲Laravel的查詢構建器的正確格式。如何使用Laravel Query Builder編寫該MySQL?

SELECT DISTINCT(colors) FROM `cards` ORDER BY LENGTH(colors) DESC 

這是我目前有:

table('cards') 
    ->orderBy(LENGTH(colors), 'desc') 
    ->get(); 
+0

我會想象'長度(顏色)'需要加引號的,因爲它是一個字符串,而不是一個PHP函數? – halfer

+0

@halfer:是的,我認爲你是對的。 – rotaercz

回答

2

請注意,你必須使用raw方法能夠運行SQL功能,如LENGTH()
這應該工作:

DB::table('cards') 
    ->select('colors') 
    ->distinct() 
    ->orderByRaw('LENGTH(colors) DESC') 
    ->get(); 
+0

哪一個更好? orderBy(DB :: raw(...))vs orderByRaw(...)? – rotaercz

+1

結果是一樣的,所以它取決於你更喜歡哪種語法。我更喜歡'orderByRaw',因爲它會導致嵌套的括號更少'()' – lukasgeiter

+0

您的答案大部分是正確的。你必須添加 - >選擇('顏色')。謝謝! – rotaercz

相關問題