2013-04-17 107 views
0

我在laravel查詢:Laravel查詢優化


... 
$query = $model::group_by($model->table().'.'.$model::$key); 
$selects = array(DB::raw($model->table().'.'.$model::$key)); 
... 
$rows = $query->distinct()->get($selects); 

這工作得很好,給我等領域鑰匙,我需要,但問題是,我需要得到所有列,而不僅僅是關鍵。

使用此:

$selects = array(DB::raw($model->table().'.'.$model::$key), DB::raw($model->table().'.*')); 

是不是一種選擇,cuz它不是與PostgreSQL的工作,所以我用$rows獲得其餘列:

for ($i = 0; $i<count($rows); $i++) 
{ 
    $rows[$i] = $model::find($rows[$i]->key); 
} 

但正如你看到的,這是它效率太低,所以我能做些什麼來使它更快,更高效?

你可以找到整個代碼在這裏:https://gist.github.com/neo13/5390091

PS。我要加入但我不知道如何?

回答

0

只是不要傳遞任何東西到get(),它會返回所有的列。此外,關鍵是大概在表中是獨一無二的,所以我不完全明白你爲什麼需要做這個小組。

$models = $model::group_by($model->table() . '.'. $model::$key)->get(); 
+0

不適用於PostgreSQL – user2277033