2017-06-29 62 views
1

所以我有一個模型,它有一個json字段作爲屬性。當它被檢索時,我想將該字段轉換爲數組,以便我可以使用它來做其他事情。在Laravel模型填充數據後對它執行操作

例如,如果JSON有這樣{name:bob,email:sue}在一個名爲json參數,數據模型對象建立的時候,我就喜歡這樣的:

public function setJsonAttribute($value) 
{ 
    $this->attributes['json'] = $value; 
    $jsonInfo = json_decode($value, true); 
    $this->name = $jsonInfo['email']; 
    $this->email = $jsonInfo['name']; 
} 

這是一個例子我嘗試了一個增變器,但這不是最優的。一旦模型從數據庫中加載數據,有沒有辦法自動完成這種事情?

Laravel 5.4

回答

0

鋒包括一個稱爲陣列鑄造特性,它從一個JSON字段轉換爲一個數組屬性上檢索和陣列轉換回對儲蓄JSON字符串。

您可以通過添加一個$啓用此蒙上屬性爲您的模型字段名作爲鍵和數組作爲值:

protected $casts = [ 
    'options' => 'array', 
]; 

https://laravel.com/docs/5.4/eloquent-mutators#array-and-json-casting

如果在有options{name:bob,email:sue}數據庫,然後您將訪問它們作爲$model->options['name']$model->options['email']

+0

謝謝,這並不完全是我所希望的,但這會奏效。當然,比我烹飪時更清潔,感覺更少。 – Chris