首页  >  问答  >  正文

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粉955063662379 天前427

全部回复(1)我来回复

  • P粉002023326

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

    通过简单地创建一个像这样的数组来修复它:

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

    回复
    0
  • 取消回复