【问题标题】:How to fetch data as association array like pg_fetch_assoc in laravel controller?如何在 laravel 控制器中获取数据作为关联数组,如 pg_fetch_assoc?
【发布时间】:2020-04-30 19:28:38
【问题描述】:

当我使用 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);

上面的代码是给我下面的格式

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

但我需要像 pg_fetch_assoc 这样的格式我怎样才能做到这一点 拉拉维尔

【问题讨论】:

  • 当你使用pg_fetch_assoc时真的返回所有"id": "I"
  • 是的,它只是一个示例数据
  • 有没有办法在 laravel 中获取关联数组而不是对象?
  • 我不太明白,因为你的第一个示例结果的键是'0','id', '1',并且有"id": "I";但是,laravel的第二个结果是"id": "T"没有“我”,我不知道它们之间的关系。
  • 请再次检查我编辑问题都是我

标签: laravel associative-array


【解决方案1】:

使用雄辩的收集方法map()映射每个stdClass;

因为pg_fetch_assoc返回列名列值索引键索引值

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

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

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

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

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

【讨论】:

  • 它给我 [{"0":"T-ABC","1":" Institues","id":"I"}, {"0":"T-XYZ" ,"1":"学院","id":"I"}, {"0":"T-QWR","1":"学院","id":"I"}]
  • 但我需要像 [{"0":"I","id":"I","1":"T-ABC","type":"T-ABC", "2":"Institues","type_desc":"Institues"}, {"0":"I","id":"I","1":"T-XYZ","type":"T -XYZ","2":"Institues","type_desc":"Institues"}, {"0":"I","id":"I","1":"T-QWR","type ":"T-QWR","2":"Institues","type_desc":"Institues"}]
  • 表示获取列名和数组,例如在 0 elment 中显示 I 和 alos 列名 "id" I
  • 您能解释一下您的代码,以便我了解它的工作原理
猜你喜欢
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 2021-02-11
  • 2022-07-08
  • 2016-07-24
  • 2021-10-10
  • 2020-12-05
  • 2020-05-02
相关资源
最近更新 更多