在 Laravel 的 Model 中,casts 屬性型別轉換屬性,
這是一個 Eloquent 將資料庫參數進行存取時,自動轉換成型別,十分好用!
當使用到 json 時,我們將其設置為
protected $casts = [ 'info' => 'json', ];
儲存時
會將 array 自動轉換為 json格式,以 String 存放
讀取時
會將 json 轉為 array 【 同 json_decode($value, true)
】
如為 null 輸出將會 null
特殊需求
有時候為了方便讓前端使用,會直接取用參數,
此時還要考慮到是否為 array 還是 null 多了一的步驟,
就可以使用 魔術方法 get 覆蓋 casts 的 讀取行為,讀取時,讓 null 轉換為 空陣列 [] !
public function getInfoAttribute($value) { if (empty($value)) { return []; } return json_decode($value, true); }