laravel怎么实现JSON字段的查询和更新_laravel JSON字段查询与更新方法

Laravel支持通过Eloquent和查询构造器操作JSON字段,可查询、更新、插入JSON数据并使用MySQL函数进行高级检索。

laravel怎么实现json字段的查询和更新_laravel json字段查询与更新方法

如果您需要在 Laravel 中对数据库中的 JSON 字段进行查询或更新操作,可以通过 Eloquent ORM 或查询构造器直接访问和修改 JSON 数据。这种操作在处理配置信息、用户偏好设置等非结构化数据时非常常见。

本文运行环境:MacBook Pro,macOS Sonoma

一、使用 Eloquent 查询 JSON 字段

在 Laravel 中,可以利用 MySQL 的 JSON 路径语法来查询 JSON 类型字段中的特定键值。这种方法适用于 WHERE 条件中精确匹配某个 JSON 内部值的情况。

1、假设您的 users 表中有一个 profile JSON 字段,包含用户的年龄信息,您可以使用如下代码查询年龄为 25 的用户:
User::where(‘profile->age’, 25)->get();

2、若要查询嵌套层级更深的数据,例如 profile->address->city,则写法如下:
User::where(‘profile->address->city’, ‘Beijing’)->get();

3、支持使用操作符进行比较查询,如大于、小于:
User::where(‘profile->age’, ‘>’, 18)->get();

二、使用查询构造器执行 JSON 查询

当需要更灵活地构建查询语句时,可使用 DB facade 提供的查询构造器功能,它同样支持 JSON 字段的路径访问。

1、导入 DB Facade(如果尚未自动加载):
use IlluminateSupportFacadesDB;

2、执行基础 JSON 查询:
DB::table(‘users’)->where(‘profile->email’, ‘test@example.com’)->get();

3、结合其他条件进行复合查询:
DB::table(‘users’)->where(‘status’, 1)->where(‘profile->age’, ‘>=’, 20)->get();

三、更新 JSON 字段中的特定键

Laravel 允许通过模型或查询构造器直接更新 JSON 字段内的某个子键,而无需替换整个 JSON 对象。

1、使用 Eloquent 模型更新单个 JSON 键:
$user = User::find(1);
$user->update([‘profile->age’ => 30]);

2、同时更新多个 JSON 子字段:
$user->update([
  ‘profile->age’ => 30,
  ‘profile->city’ => ‘Shanghai’
]);

3、使用 DB facade 进行批量更新:
DB::table(‘users’)->where(‘id’, 1)->update([‘profile->status’ => ‘active’]);

四、插入全新的 JSON 数据记录

当创建新记录时,可以直接将数组形式的数据赋值给 JSON 字段,Laravel 会自动将其编码为 JSON 格式存储到数据库中。

1、定义允许批量赋值的属性(在模型中):
protected $fillable = [‘name’, ‘profile’];

2、创建一条包含 JSON 数据的新记录:
User::create([
  ‘name’ => ‘John Doe’,
 &nbsp’profile’ => [‘age’ => 28, ‘city’ => ‘Guangzhou’, ‘skills’ => [‘PHP’, ‘Laravel’]]
]);

3、确保数据库表结构已定义 profile 字段为 JSON 类型,以保证正确存储。

五、使用 JSON 数组函数进行高级查询

MySQL 提供了多种内置函数用于操作 JSON 数据,如 JSON_CONTAINS、JSON_EXTRACT 等,可在 Laravel 中结合原始表达式使用。

1、查找 JSON 数组中包含特定值的记录:
DB::table(‘users’)->whereRaw(‘JSON_CONTAINS(profile->”$.skills”, ?)’, [‘”Laravel”‘])->get();

2、提取并返回 JSON 中的某个字段作为结果的一部分:
DB::table(‘users’)->select(DB::raw(‘JSON_EXTRACT(profile, “$.age”) as age’))->get();

3、使用 JSON_SEARCH 查找某个字符串在 JSON 数组中的位置:
DB::table(‘users’)->whereRaw(‘JSON_SEARCH(profile->”$.skills”, “one”, ?) is not null’, [‘Laravel’])->get();

以上就是laravel怎么实现JSON字段的查询和更新_laravel JSON字段查询与更新方法的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/193471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
快手直播间如何禁言_快手直播间禁言的操作与管理技巧
上一篇 2026年9月8日 10:15:01
Windows10无法在文件资源管理器中预览PDF或图片怎么办_Windows10文件资源管理器预览失败修复方法
下一篇 2026年9月8日 10:18:51

相关推荐

  • mac怎么撤销已发送的信息_Mac撤销已发送信息方法

    答案:Mac上可通过“信息”应用在2分钟内撤回或编辑iMessage消息。操作步骤:1. 悬停消息气泡点击“…”;2. 选择“撤回”或“编辑”;3. 编辑最多5次,超限仅可撤回,对方消息同步删除。 如果您在Mac上使用信息应用发送了消息,但发现内容有误或需要撤回,可以在一定时间内执行撤销操作。此功能…

    2026年9月21日
    000
  • Windows系统下的兼容性问题

    windows兼容性问题严重是因为系统演进快、硬件和软件环境多样。处理此问题需:1.了解目标系统版本和配置;2.使用低版本api或兼容性模式;3.检测操作系统版本并调整程序行为;4.避免依赖特定版本的库,提供多版本安装包;5.考虑硬件依赖性,提供备选方案;6.进行跨版本性能测试和优化。 在Windo…

    2026年9月21日
    000
  • Linux如何限制用户执行特定命令

    Linux如何限制用户执行特定命令Linux如何限制用户执行特定命令Linux如何限制用户执行特定命令Linux如何限制用户执行特定命令

    首选sudo进行命令限制,因其灵活且可审计;通过visudo配置精确的用户权限,结合白名单、命令别名和!语法实现允许或拒绝特定命令;同时防范绕过手段如全路径执行、间接调用、脚本执行等,需多层防御并辅以日志监控。 在Linux环境中,限制用户执行特定命令,最直接有效且灵活的方法通常是利用 sudo 权…

    2026年9月21日 用户投稿
    000
  • 猎豹浏览器最新官方网址链接 猎豹浏览器平台入口直达官网首页

    猎豹浏览器最新官方网址是http://m.liebao.cn/,该网站提供安卓和iPhone版浏览器下载,具备双引擎加速、视频缓存、安全防护及个性化设置等功能。 猎豹浏览器最新官方网址链接在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来猎豹浏览器平台入口直达官网首页,感兴趣的网友一起随小编…

    2026年9月21日
    000
  • 豆包大模型1.6 lite— 字节跳动推出的轻量级AI模型

    豆包大模型1.6 lite— 字节跳动推出的轻量级AI模型豆包大模型1.6 lite— 字节跳动推出的轻量级AI模型豆包大模型1.6 lite— 字节跳动推出的轻量级AI模型豆包大模型1.6 lite— 字节跳动推出的轻量级AI模型

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 豆包大模型 字节跳动自主研发的一系列大型语言模型 834 查看详情 豆包大模型1.6 lite是什么 豆包大模型1.6 lite(doubao-seed-1.6-lite)是字节跳动推出的轻量级…

    2026年9月21日 用户投稿
    300
  • mysql如何使用事务保证操作原子性

    答案:MySQL中事务通过START TRANSACTION开启,需使用InnoDB引擎并关闭自动提交,执行SQL后根据结果COMMIT或ROLLBACK,结合异常处理确保原子性。 在MySQL中,事务是保证数据库操作原子性的核心机制。通过事务,可以确保一组SQL操作要么全部成功执行,要么全部不执行…

    2026年9月21日
    500
  • VSCode的括号着色功能如何帮助你避免语法错误?

    VSCode括号着色功能通过彩色高亮匹配括号,帮助用户直观识别嵌套结构、提升代码可读性,并快速发现遗漏或多余括号,减少语法错误。 VSCode的括号着色功能通过视觉方式帮你快速识别代码中的匹配和嵌套结构,减少语法错误的发生。当你在编写代码时,成对出现的括号(如()、[]、{})会被高亮显示为相同或相…

    2026年9月21日
    000
  • 百度AI开发者大会何时举行_百度AI开发者大会参与指南

    2025百度AI开发者大会于4月25日在武汉体育中心举办,主题为“模型的世界,应用的天下”,发布了两大模型及多款AI应用,参会需通过官网注册报名,审核后获取电子凭证,同时提供线上直播及会后视频回看。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜…

    2026年9月21日
    000
  • 抖音商城是哪个公司在运营

    抖音商城的运营主体揭晓 抖音商城由北京微播视界科技有限公司负责运营。 作为抖音背后的母公司,字节跳动通过其全资子公司——微播视界,全面掌舵抖音平台及其电商板块的日常运作。依托雄厚的技术积累与多元化的业务布局,为用户打造流畅、智能且高效的购物环境。 抖音商城究竟是什么? 抖音商城是抖音App内嵌的一站…

    2026年9月21日
    100
  • mysql如何理解索引选择性

    索引选择性是衡量索引效率的关键指标,定义为索引列不同值数量与总行数的比值,范围在0到1之间。越接近1,数据唯一性越高,索引过滤能力越强,查询性能越好。例如主键列选择性为1,而性别列因重复值多选择性极低。MySQL优化器会优先选择高选择性索引以缩小搜索范围,提高执行效率。可通过SELECT COUNT…

    2026年9月21日
    000
  • 卖不动!iPhone Air暂时停产!库存已经够用了

    据数码博主“定焦数码”透露,苹果iphone air目前已暂停生产。此次调整主要受两方面因素影响:一是该机型在海外市场销量未达预期;二是中国大陆地区的上市时间有所推迟。不过,由于前期已储备了充足的整机库存,当前市场供应不受影响,未来将根据订单积累情况再决定恢复生产的时机。 这一产能变动与此前投资机构…

    2026年9月21日
    000
  • 豆包语音2.0— 字节跳动推出的升级版AI语音模型

    豆包语音2.0是什么 豆包语音2.0是字节跳动推出的升级版ai语音模型,包含两大核心模型:豆包语音合成模型2.0(doubao-seed-tts 2.0)和豆包声音复刻模型2.0(doubao-seed-icl 2.0)。语音合成模型2.0支持对话式合成,可精准理解语义和情感,实现复杂公式朗读,准确…

    2026年9月21日
    100
  • Java中如何将嵌套列表对象转换为扁平化单元素列表

    本文探讨了在java中将包含嵌套列表的对象集合转换为新列表的多种策略,旨在使新列表中每个对象仅包含其嵌套列表中的一个元素。通过详细介绍java 7的传统迭代方法、java 8-15的stream api `flatmap`操作,以及java 16及更高版本的`mapmulti`方法,文章提供了清晰的…

    2026年9月21日
    100
  • 如何为VSCode安装新的字体?

    先在操作系统安装字体文件,再在VSCode设置中指定字体名称。1. Windows右键安装.ttf/.otf文件,macOS用字体册安装,Linux复制到~/.fonts并运行fc-cache -fv;2. VSCode中通过设置界面或编辑settings.json修改”editor.f…

    2026年9月21日
    000
  • CentOS安装Mysql8.0图文教程[通俗易懂]

    CentOS安装Mysql8.0图文教程[通俗易懂]CentOS安装Mysql8.0图文教程[通俗易懂]CentOS安装Mysql8.0图文教程[通俗易懂]CentOS安装Mysql8.0图文教程[通俗易懂]

    大家好,又见面了,我是你们的朋友全栈君。 本文将为您提供一个详细的CentOS通过yum安装Mysql8.0的图文教程,并指导您如何配置和运行Mysql,使其能够被外部访问。 首先,我们需要从官网下载对应的rpm包,并复制下载链接。 接着,执行以下命令进行下载: # 先进入到local文件夹cd u…

    2026年9月21日 用户投稿
    100
  • mysql如何配置ssl安全连接

    MySQL支持SSL时返回YES,通过生成证书并配置my.cnf中的ssl-ca、ssl-cert、ssl-key启用SSL,创建REQUIRE SSL用户确保加密连接,客户端连接需指定证书参数,STATUS或Ssl_cipher验证加密状态。 MySQL 配置 SSL 安全连接可以提升数据库通信的…

    2026年9月21日
    200
  • MAC怎么设置在插上电源时自动开机_MAC插电自动开机设置方法

    答案:Mac断电后自动开机可通过系统设置、重置SMC或终端命令实现。首先在“系统设置-电池-选项”中开启“连接电源适配器时自动开机”;若无此选项,需重置SMC(关机后按Shift+Option+Control+电源键10秒);仍不可用则通过终端执行pmset -g查看设置,并用sudo pmset …

    2026年9月21日
    200
  • 从 API 响应中提取元素并在 Java 中使用

    本文介绍了如何在 Java 中解析 API 响应,并从中提取特定元素的值。以 JSON 格式的响应为例,演示了如何使用 Jackson 库将 JSON 字符串转换为 Java 对象,并提取所需的数据,例如账户 ID,以便在后续操作中使用。 在 Java 开发中,经常需要与 API 进行交互,并从 A…

    2026年9月21日
    100
  • 苹果痛失AI大将,Siri关键负责人转投Meta

    苹果痛失AI大将,Siri关键负责人转投Meta苹果痛失AI大将,Siri关键负责人转投Meta苹果痛失AI大将,Siri关键负责人转投Meta苹果痛失AI大将,Siri关键负责人转投Meta

    近日有消息显示,%ignore_a_1%公司负责siri改革的关键高管ke yang已确认离职,并将加入竞争对手meta。这一变动不仅为苹果雄心勃勃的ai计划蒙上了一层阴影,也再次凸显了其在留住顶尖人才方面面临的严峻挑战。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 Dee…

    2026年9月21日 用户投稿
    200
  • REDMI有史以来最强手机!K90 Pro Max这次真的强到爆

    REDMI有史以来最强手机!K90 Pro Max这次真的强到爆REDMI有史以来最强手机!K90 Pro Max这次真的强到爆REDMI有史以来最强手机!K90 Pro Max这次真的强到爆REDMI有史以来最强手机!K90 Pro Max这次真的强到爆

    如果说redmi过去是“性价比之王”,那么这一次,它彻底进化成了“性能怪兽”。10月23日即将登场的redmi k90 pro max,不仅是品牌年度旗舰的压轴大戏,更是其历史上首款冠以“pro max”之名的巅峰之作。 这可以看作是REDMI向高端市场发起冲击的正式宣言。卢伟冰亲自放话:“给4K价…

    2026年9月21日 用户投稿
    300

发表回复

登录后才能评论
关注微信