1
我在联系人表中存储了一个JSON数组,并且能够运行语句以使用我的SQL管理器删除密钥,但是我没有找到任何方法来转换此查询到Eloquent或原始声明:使用Eloquent或原始语句删除多重JSON密钥
UPDATE `contacts` SET `additional` = JSON_REMOVE(`additional` , '$."3"')
任何想法如何在Laravel中运行此查询?
我在联系人表中存储了一个JSON数组,并且能够运行语句以使用我的SQL管理器删除密钥,但是我没有找到任何方法来转换此查询到Eloquent或原始声明:使用Eloquent或原始语句删除多重JSON密钥
UPDATE `contacts` SET `additional` = JSON_REMOVE(`additional` , '$."3"')
任何想法如何在Laravel中运行此查询?
$id = 3;
$jsonPath = '$."'.$id.'"';
使用原始声明
DB::statement('UPDATE contacts SET additional = JSON_REMOVE(additional, ?)', [$jsonPath];
使用的QueryBuilder:
DB::table('contacts')
->update([
'additional' => DB::raw("JSON_REMOVE(additional, '$jsonPath')")
]);
使用雄辩:
Contact::query()
->update([
'additional' => DB::raw("JSON_REMOVE(additional, '$jsonPath')")
]);
感谢,工程巨大,但你有怎样的任何想法传递一个变量(用$ id替换“3”)? – altonline
找到了解决方案:Contact :: query() - > update(['additional'=> DB :: raw('JSON_REMOVE(additional,\'$ \。''。$ id。'\''')' )]); – altonline
@altonline请参阅更新。 – peterm