我在 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 但我不知道如何?