Laravel ->put() 问题 - 混合内容(JSON 与非 JSON)
P粉955063662
P粉955063662 2023-09-09 15:30:11
0
1
475

我在使用 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);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板