Laravel查询优化

时间:2013-04-17 16:56:58

标签: laravel

我在laravel中有一个查询:


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

这样可以正常工作,并为我提供了我需要的字段键,但问题是我需要获取所有列而不仅仅是Key。

使用:

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

不是一个选项,因为它不能与PostgreSQL一起使用,所以我使用 $rows 来获取其余列:

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

但正如你所看到的那样效率低下,那么我该如何才能让它变得更快更有效呢?

您可以在此处找到完整的代码:https://gist.github.com/neo13/5390091

PS。我会使用加入,但我不知道如何?

1 个答案:

答案 0 :(得分:0)

只是不要将任何内容传递给get(),它将返回所有列。此外,关键字可能在表格中是唯一的,所以我不完全理解为什么你需要做这个小组。

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