搜尋

首頁  >  問答  >  主體

Laravel ->put() 問題 - 混合內容(JSON 與非 JSON)

我在使用 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粉955063662P粉955063662452 天前483

全部回覆(1)我來回復

  • P粉002023326

    P粉0020233262023-09-10 11:29:38

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

    $grade_json = array("grade" => $grade);
    $datatable->GroupsCollection = $datatable->GroupsCollection->put($job, $grade_json);

    回覆
    0
  • 取消回覆