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

或者说laravel如何使用JSON_REMOVE?

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

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

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

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

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

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

求解答。。。谢谢了

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

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

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

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

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年前
chowjiawei

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

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

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

file

2年前 评论

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