2017-04-11 111 views
1

我存儲在一個MySQL數據庫中的列(meta_data)一個JSON格式的字符串,存儲在表中,它看起來像這樣的例子:JSON字符串在MySQL中JSON響應

{"Format":"JPEG","Geometry":"3216x2136","size":{"width":3216,"height":2136}} 

現在,如果我使用以下命令:

$meta_data = DB::query->get(); 
return $meta_data; 

我得到:

[ 
    { 
    "meta_data": "{\"Format\":\"JPEG\",\"Geometry\":\"3216x2136\",\"size\":{\"width\":3216,\"height\":2136} 
    } 
] 

我也得到了同樣的結果,如果我使用:

$meta_data = json_decode(DB::query->get()); 
return $meta_data; 

類似地,使用響應() - > JSON($ meta_data);以字符串形式返回它。

在我看來,它需要去下一個步驟下來,但我一直沒能得到任何接近我後,其理想:

[ 
    { 
    "meta_data": 
    { 
     "Format":"JPEG", 
     "Geometry":"3216x2136", 
     "size": 
     { 
     "width":3216, 
     "height":2136 
    } 
    } 
    } 
] 
+0

你想改變josn到陣列?或者請你清楚的問題是什麼? –

回答

1

DB::query->get()將返回stdClass對象數組(假設query只是查詢條件的簡寫)。您將需要遍歷數組並將每個條目的meta_data字段手動轉換爲json對象。

$records = DB::query->get(); 

foreach ($records as $record) { 
    $record->meta_data = json_decode($record->meta_data); 
} 

return $records; 

另一種選擇是創建表格模型,然後將meta_data字段添加到$casts屬性將自動轉換爲JSON。

型號:

class Attachment extends Model 
{ 
    protected $casts = [ 
     'meta_data' => 'json', 
    ]; 
} 

控制器:

// assume "query" is shorthand for your query conditions 
$records = Attachment::query->get(); 

return $records;