我在使用 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);