Php 如何使用eloquent从存储在数据库中的json中删除项目?
我有一个模型,它将数据存储在中,如下所示:Php 如何使用eloquent从存储在数据库中的json中删除项目?,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个模型,它将数据存储在中,如下所示: { "id": "1f280536-3aa2-45d9-8f23-41c27a26c8bf", "setting": { "item 1": "first item", "item 2": "second item
{
"id": "1f280536-3aa2-45d9-8f23-41c27a26c8bf",
"setting": {
"item 1": "first item",
"item 2": "second item",
"logo": {
"small": "1anFsLsviRf_8zI5u8x5BY3OSf-jWAWkE"
}
},
}
如您所见,设置是一个json,其中包含另一个嵌套的jsonlogo
。我有一个destroy controller方法,可以从logo
json中删除单个logo,但当我尝试变异logo
时,我得到了ErrorException:间接修改重载属性App\Models\Company::$设置在文件中没有效果
错误。我在存储新徽标时遇到了相同的错误,但我使用array\u merge
$company->setting = array_merge($company->setting, array("logo"=>array_merge($company->setting["logo"], array($request->size=>$file_id))));
如何解决删除单个键值对表单
logo
json时的问题?您可以json\u解码
公司设置,然后删除logo
键
$setting = json_decode($company->setting, true);
unset($setting['setting']['logo']);
$company->setting = json_encode($setting);
我已经尝试过这样做,但出现“json_decode()期望参数1为字符串,文件中给定的数组”错误$公司->设置已经是一个数组,不需要解码。很好,所以你需要第二部分!我尝试了“unset”方法,但仍然得到“间接修改重载属性”错误。