Laravel ->put() 問題 - 混合內容(JSON 與非 JSON)
P粉955063662
P粉955063662 2023-09-09 15:30:11
0
1
476

我在使用 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粉955063662
P粉955063662

全部回覆(1)
P粉002023326

透過簡單地建立一個像這樣的陣列來修復它:

$grade_json = array("grade" => $grade);
$datatable->GroupsCollection = $datatable->GroupsCollection->put($job, $grade_json);
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板