2014-05-21 70 views
0

我想通過在Laravel Eloquent高級查詢中使用orderby對數據進行排序。這裏是我的代碼:orderby在Laravel中不起作用Eloquent高級查詢

$users = User::where(function($query){ 

     $query->orderBy('created_at', 'DESC'); 

    })->get()->toArray(); 
    var_dump($users); 

但它不起作用。相反,如果我使用這樣orderby:

$users = User::orderBy('created_at', 'DESC')->get()->toArray(); 
    var_dump($users); 

它的工作。

任何人都可以建議如何使高級查詢工作順序?謝謝

+0

當你在這樣的「函數」中有'where'查詢時,它實際上是一個* sub *查詢,所以排序結果不會影響父查詢。那麼,其實這只是一個猜測,但它聽起來很正確:P –

回答

1

我試過各種不同的組合,發現orderBy必須在查詢函數之外(或者應該是最後一個?)。下面是正在工作的代碼:

$users = User::where(function($query){ 

    // ...... 

})->orderBy('created_at', 'DESC')->get()->toArray(); 
var_dump($users); 
+0

我一直有相同的經驗 – jmadsen