我在使用 Laravels put() 函數時遇到問題,因為我想將 JSON 內容放入這一單一場景中。
$datatable->GroupsCollection = $datatable->GroupsCollection->put($job, '{"grade":'.$grade.'}' );
但是當嘗試建立「假」JSON 時,插入的值將是:
{\"等級\":'VALUE_OF_$GRADE'}
我嘗試使用 str_replace()
和 stripslashes()
來刪除反向斜線,但沒有 bueno。
我用谷歌搜尋了一下,在模型中需要閱讀一些關於演員表的內容。 所以我輸入了這個:
protected $casts = [ 'dvalue' => 'array', ];
這會破壞程式碼的現有功能。
public function getGroupsCollectionAttribute() { return collect($this->dvalue ? $this->dvalue['groups'] : null); } public function setGroupsCollectionAttribute($value) { $currentValue = $this->dvalue ?? new Collection(); $this->dvalue['groups'] = $currentValue->$value; }
我「修復」了 get,但我不確定應該如何使用這個新的強制類型轉換來格式化「set」函數並將其設定為陣列。
值得注意的是,我們在資料庫行中混合了內容,因此它並不總是 JSON。 有更簡單的方法來解決這個問題嗎?
P粉0020233262023-09-10 11:29:38
透過簡單地建立一個像這樣的陣列來修復它:
$grade_json = array("grade" => $grade); $datatable->GroupsCollection = $datatable->GroupsCollection->put($job, $grade_json);