【Laravel】 關於 Eloquent 在 casts 上,使用 json 的 空值判斷

LaravelModel 中,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);
    }