将多个JSON对象合并到Laravel Eloquent集合中的单个对象中

时间:2016-02-18 08:12:43

标签: php json eloquent laravel-5.2

我遇到了将多个JSON对象合并到Laravel Eloquent集合中的问题。

当我运行以下代码时:

return Project::all();

我明白了:

[
    {
        "created_at": "2016-02-17 15:08:11",
        "description": "first description",
        "id": 1,
        "name": "John Doe",
        "updated_at": "2016-02-17 15:08:11"
    },
    {
        "created_at": "2016-02-17 15:08:31",
        "description": "second description",
        "id": 2,
        "name": "Jane Doe",
        "updated_at": "2016-02-17 15:08:31"
    }
]

但是,我正在尝试将这个多个JSON对象合并为单个,如下所示:

{
    "0": "John Doe",
    "1": "Jane Doe"
}
这让我发疯了。是否有人可以协助我如何实现这一目标? 这里的关键并不重要。

2 个答案:

答案 0 :(得分:2)

使用Collection::pluck()

$projects = Project::all();
$projects = $projects->pluck('name')->toJson();

// [ "John Doe", "Jane Doe" ]

如果你想把它变成一个对象,就像这样投射

(object) $projects->pluck('name')->toArray()

// { "0": "John Doe", "1": "Jane Doe" }

如果要返回JSON响应

$projects = (object) $projects->pluck('name')->toArray()
return response()->json($projects);

答案 1 :(得分:0)

只需定义一个新数组,插入您想要的任何值。

假设您的JSON对象名为$ data;

    $result = array();
    foreach($data as $us){
      array_push($result, $us['name']);
    }
    $result = json_encode($result, JSON_FORCE_OBJECT);