2015-12-27 85 views
4

我想將一個JSON字段轉換爲數組。例如該模型是這樣的:Laravel將JSON轉換爲數組?

protected $casts = [ 
    'content' => 'array' 
]; 

而在插入裏面的內容,我不喜歡這樣寫道:

'content'=> json_encode([ 
       'description' => $faker->paragraph(3), 
       'about' => $faker->paragraph(2), 
       'info' => $faker->paragraph(2), 
       'updated' => $faker->dateTimeBetween('-1 years', 'now') 
]), 

但在獲取數據它打印一個字符串,沒有別的。

這一部分的遷移是這樣的:輸出

$campaign->json('content'); 

樣品:

"content": "{\"description\":\"Ut quas quo odio illo. Voluptates quia fuga itaque sint. Velit sapiente fugit ea ut ducimus sint tempora eligendi. Ea et molestiae consequuntur quibusdam soluta voluptatem.\",\"about\":\"Aut voluptates et iste ut perspiciatis. Esse sunt ullam inventore sit doloremque et quisquam.\",\"info\":\"Corrupti et facere exercitationem consequatur aspernatur quo saepe. Omnis et tempore enim ut. Quia magnam quia enim et eos enim.\",\"updated\":{\"date\":\"2015-11-22 08:25:13.000000\",\"timezone_type\":3,\"timezone\":\"UTC\"}}", 

任何想法,爲什麼?

+0

RTM: [json_encode](http://php.net/manual/en/function.json-encode.php)和[json_decode](http://php.net/manual/en/function.json-decode.php)。另外,當你設置''key'=>'value''時,你已經有了一個數組。你想達到什麼目的? xD_ – FirstOne

+0

我正在從模型中轉換元素,所以當控制器返回JSON時,它看起來像一個JSON對象,而不是一個字符串。這種方式很容易操作和使用:) – jycr753

回答

5

當你定義array投你不需要做任何json_encodejson_decode。當你要插入,簡單,你需要做的:

'content'=> [ 
    'description' => $faker->paragraph(3), 
    'about' => $faker->paragraph(2), 
    'info' => $faker->paragraph(2), 
    'updated' => $faker->dateTimeBetween('-1 years', 'now') 
], 

Laravel將完成剩下的

而當你想獲得content現場數據,你的簡單需要使用:

$campaign->content; 

,你會在這裏陣列,所以如果你想顯示說明,你只需要做:

echo $campaign->content['description']; 
+1

謝謝你是這樣的。我完全迷失了,因爲我之前在laravel 4中放置了一個數組,但它在播種時拋出一個錯誤,但看起來像我需要更好地閱讀錯誤...感謝隊友:) – jycr753

3

只要使用json_decodeoption array true

json_decode($casts['content'], true)); 
+0

當數據通過關係和'$ data-> content;'獲取模型的那部分時,你將如何實現? – jycr753

+0

你可以嘗試$ data-> toArray() – zt1983811