如何在 laravel 控制器中获取数据作为关联数组,如 pg_fetch_assoc?

How to fetch data as association array like pg_fetch_assoc in laravel controller?

当我使用 pg_fetch_assoc 时,我的输出如下

[{"0":"T","id":"I","1":"T-ABC"},
{"0":"T","id":"I","1":"T-XYZ"},
{"0":"T","id":"I","1":"T-QWR"}]

但现在我正在使用 Laravel 框架并且在我的控制器中使用以下代码

$type=$request->type;
$query= typeModel::get()->where('id',$type);
return response()->json($query);

The above code is give me below format

{"11":{"id":"I","type":"T-ABC"},
"12":{"id":"I","type":"T-XYZ"},
"13":{"id":"I","type":"T-OWR"}}

But I need format like pg_fetch_assoc How can i achieve this in laravel

使用eloquent集合方法map()映射每个stdClass;

因为pg_fetch_assoc return 列名, 列值, 索引键 索引值;

所以我们可以使用array_merge合并两个数组。

一个是$array1包括列名,列值;

另一个是$array2只有列的所有值;

将数组转换为stdClass,它会自动在那个$array2上添加索引键,这个索引键从0:[=18开始=]

$query = typeModel::where('id',$type)->get()->map(function($item) {
         $array1 = $item->toarray();
         $array2 = array_values($array1);
         return (object) array_merge($array1, $array2);
    })->toArray();