假设我有一个名为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.
答案 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;