Laravel - 在JSON编码的数据库列中获取特定数组

时间:2017-12-15 16:26:01

标签: php laravel

假设我有一个名为Posts的表,其中包含以下列:

-- uid (int)
-- title (str)
-- body (text)
-- data (json)

并且在data列中的一行中,我有一个JSON编码的响应,如下所示:

[{
    "title": "Blue",
    "points": 0,
    "tags": [{
        "type": "Comedy",
        "uid": 45
    }]
}, {
    "title": "Green Orange",
    "points": 2,
    "tags": [{
        "type": "Horror",
        "uid": 1
    }]
}]

所有这些都是json_encode到一个数据库列中。

我如何才能将Green Orange变为变量?

我试过了:

$post = Post::where('id', $id)->first();

$data = json_decode($post->data);

return $data[0];

但这只是给了我:The Response content must be a string or object implementing __toString(), \"object\" given.

2 个答案:

答案 0 :(得分:2)

您正在访问完整对象,而是需要其字段:

$post = Post::where('id', $id)->first();//$post = Post::find($id); would be better

$data = json_decode($post->data);

return $data[1]->title;//note than Green Orange is in the second object of the array, so not index 0 but 1

答案 1 :(得分:1)

您需要访问数组的第二个对象中的title字段。



return $data[1]->title;