我使用流明设置微服务来频繁轮询数据库,并通过wamp路由器将数据集分发到多个客户端。数据库查询存储在存储过程中,这就是我在控制器中执行以下操作的原因:
$result = DB::select($query);
return $result;
返回提供以下数据集:
[
{
"0": "012345",
"1": "Moby Dick",
"2": "Herman Melville",
"3": "Hardcover",
"isbn": "012345",
"title": "Moby Dick",
"author": "Herman Melville",
"type": "Hardcover"
},
{
"0": "123456",
"1": "Laravel: Code Bright",
"2": "Dayle Rees",
"3": "Ebook",
"isbn": "123456",
"title": "Laravel: Code Bright",
"author": "Dayle Rees",
"type": "Ebook"
},
{
"0": "234567",
"1": "Easy Laravel 5",
"2": "W.J. Gilmore",
"3": "Ebook",
"isbn": "234567",
"title": "Easy Laravel 5",
"author": "W.J. Gilmore",
"type": "Ebook"
}
]
我想删除关联键值对前面的数字键值对。我怎么能这样做?
提前致谢!
编辑:我尝试过的事情:
$result = DB::select($query)->get(); // Gives: Call to a member function get() on array. For obvious reasons
像Matei这样的肮脏黑客说:循环通过数组并删除密钥为数字的KVP。哪个有效,但我认为Laravel / Lumen框架提供了更清晰的解决方案,我无法找到。
答案 0 :(得分:0)
在config/database.php
中,您可以将'fetch' => PDO::FETCH_CLASS,
更改为'fetch' => PDO::FETCH_ASSOC,
或强>
您可以使用array_reduce
和array_filter
之类的:
$result = json_decode(DB::select($query), true);
$result = array_reduce($result, function ($result, $item) {
$result[] = array_filter($result, function ($key) {
return !is_numeric($key);
}, ARRAY_FILTER_USE_KEY)
return $result;
}, array());
return json_encode($result);
注意:如果数据库stmt返回的是数组,而不是json编码的字符串,则必须删除json_decode
和json_encode
函数调用。