0

我在 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().'.*'));

不是一个选项,因为它不适用于 PostgreSQL,所以我曾经 $rows 获取其余列:

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

但是正如您所见,它的效率太低了,那么我该怎么做才能使它更快,更高效呢?

你可以在这里找到整个代码:https ://gist.github.com/neo13/5390091

附言。我应该使用 join 但我不知道如何?

4

1 回答 1

0

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

$models = $model::group_by( $model->table() . '.'.  $model::$key )->get();
于 2013-04-17T21:31:14.393 回答