ORM如何删除数据库中Json字段的某个值?

或者说laravel如何使用JSON_REMOVE?

现在我数据库中question_answer这个为json字段

如何删除数据库中Json字段的某个值?

我用laravel怎么去使数据变成这个样子

如何删除数据库中Json字段的某个值?
就是删除掉所有json字段中key=5的键
我只知道一个笨办法就是

Answer::query()->where('question_answer->'.$id,[])->get();

查询到所有包含$id的内容,然后一个取出来unset()之后再插回去,有没有别的更直接的方法!

求解答。。。谢谢了

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

官方没有提供这个方法,直接用原生就好了。

Answer::query()->update([
     'answer' => DB::raw("JSON_REMOVE(answer, '\$.\"5\"')")
])
2年前 评论
maonini (楼主) 2年前
maonini (楼主) 2年前
maonini (楼主) 2年前
MArtian (作者) 2年前
maonini (楼主) 2年前
讨论数量: 4
chowjiawei

删除掉所有 json 字段中 key=5 的键

数据库无需操作,在model层 get 不显示key=5的即可,既然有存储key=5的,说明在某个地方你是要用他的吧?还是不要都删了好,要的地方显示,不要的地方隐藏即可,除非你是设计错误了?

2年前 评论
maonini (楼主) 2年前
maonini (楼主) 2年前
chowjiawei

file

2年前 评论

官方没有提供这个方法,直接用原生就好了。

Answer::query()->update([
     'answer' => DB::raw("JSON_REMOVE(answer, '\$.\"5\"')")
])
2年前 评论
maonini (楼主) 2年前
maonini (楼主) 2年前
maonini (楼主) 2年前
MArtian (作者) 2年前
maonini (楼主) 2年前

我遇到过这个坑,后来索性把json字段分一个表了,因为json字段复杂后扩展真的很差。

2年前 评论
maonini (楼主) 2年前
bigdaxin (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!