选择结果中的Laravel数值数组

时间:2015-12-16 08:42:08

标签: php arrays database laravel lumen

我使用流明设置微服务来频繁轮询数据库,并通过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框架提供了更清晰的解决方案,我无法找到。

1 个答案:

答案 0 :(得分:0)

config/database.php中,您可以将'fetch' => PDO::FETCH_CLASS,更改为'fetch' => PDO::FETCH_ASSOC,

您可以使用array_reducearray_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_decodejson_encode函数调用。