2015-05-04 42 views
2

訂購雄辯集合結果時出現問題。這是我的初始代碼:訂單指定列的雄辯結果

class Major extends Eloquent { 

    protected $table = 'majors'; 

    /** 
    * Gets all active majors 
    * 
    * @param $orderField Field by which the collection should be ordered 
    * @param $orderDirection Direction of ordering 
    */ 
    public static function getAllActive($orderField = 'order', $orderDirection = 'asc') { 
     $columns = array('id', 'name_de', 'name_en', 'name_'.Config::get('app.locale').' as name', 'active'); 
     return self::all($columns)->where('active', 1); 
    } 
} 

獲得專業的方法工作正常。現在,我想訂購由特定領域的結果,所以我改變了回到這個:

return self::all($columns)->where('active', 1)->orderBy($orderField, $orderDirection); 

代碼引發以下錯誤:

調用未定義的方法照亮\數據庫\雄辯\收藏:: orderBy()

我需要保持$columns變量,因爲我需要name列別名。如何正確訂購雄辯結果?

回答

1

all執行查詢並返回一個集合。你可以使用select方法:

self::whereActive(1) 
    ->orderBy($orderField, $orderDirection) 
    ->select($columns) 
    ->get(); 
+0

好點,很好的答案。發佈我的稍微不同的版本。謝謝! – lesssugar

+0

@lesssugar歡迎您! – undefined

1

好吧,算出來。這個想法是先收集收集,然後選擇列:

return self::orderBy($orderField, $orderDirection) 
      ->select($columns) 
      ->where('active', 1) 
      ->get(); 

此外,Vohuman的答案也是完全有效的。