当前位置: 首页 > news >正文

ThinkPHP 8 操作JSON数据

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客

《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书

使用VS Code开发ThinkPHP项目-CSDN博客

编程与应用开发_夏天又到了的博客-CSDN博客

我们学习了通过调用json()方法来设置JSON字段。然而,每次操作JSON字段都需要调用json()方法显得有些烦琐,为了简化这一过程,我们可以使用模型的$json属性来直接进行操作,示例如下(读者可以自行编写一个简单的控制器来测试示例):

<?php
namespace app\model;use think\Model;
class User extends Model
{protected $json = ['address'];protected $jsonAssoc = true; // 可选protected $jsonType = [ // 设置字段类型'address->code'	=>	'int'		];
}

上例中,$jsonAssoc属性是用来控制JSON字段的返回类型,其默认值为false,返回对象形式,我们可以将$jsonAssoc属性设置为true,使其通过数组方式操作JSON字段。

$jsonType字段和$type字段类似,用来指定JSON子字段的数据类型,在不指定的情况下,默认都视为STRING。上面的例子中,我们指定了address->code为整型。

1. 查询操作

下面是一个查询省份为北京市的用户示例:

$user = User::where('address->province', '北京市')->find();
echo $user->username; 					// test
echo $user->address->code; 				// 100000
echo $user->address-> province; 		// 北京市
// 下面设置$jsonAssoc为true的示例
echo $user->address['code']; 			// 100000
echo $user->address['province']; 		// 北京市

在示例中,$user->address['code']中的“->”是访问模型的address属性,['code']是使用数组形式访问address这个JSON属性的code字段。

2. 更新操作

下面是一个更新用户地址的示例:

$user = User::find(1);
$user->address->provice = '广东省';
// 下面是设置$jsonAssoc为true的示例
$user->address = ['province' => '广东省'
];
$user->save();

3. 插入操作

下面是一个新增用户的示例:

$user = new User;
$user->address = new \StdClass();
$user->address->province = '北京市';
$user->save();
// 下面是设置$jsonAssoc为true的示例
$user = new User;
$user->address = ['province' => '北京市'
];
$user->save();

通过预先定义$json和$jsonAssoc字段,可以减少一部分重复调用json()方法的工作,进而提高开发效率。因此,我们建议各位读者将其纳入常见开发实践中,使自己的开发更加高效!

http://www.lryc.cn/news/525907.html

相关文章:

  • 环境变量配置与问题解决
  • pytorch2.5实例教程
  • 【开源免费】基于SpringBoot+Vue.JS智慧图书管理系统(JAVA毕业设计)
  • 基于自然语言处理的垃圾短信识别系统
  • Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
  • Day 17 卡玛笔记
  • 深圳大学-智能网络与计算-实验一:RFID原理与读写操作
  • ⚡C++ 中 std::transform 函数深度解析:解锁容器元素转换的奥秘⚡【AI 润色】
  • 【miniconda】:langraph的windows构建
  • (k8s)k8s部署mysql与redis(无坑版)
  • Git常用操作指令
  • 新手理解:Android 中 Handler 和 Thread.sleep 的区别及应用场景
  • 智能安全策略-DPL
  • 差分进化算法 (Differential Evolution) 算法详解及案例分析
  • Alibaba Spring Cloud 十七 Sentinel熔断降级
  • LetsWave脑电数据简单ERP分析matlab(一)
  • 设计模式Python版 工厂方法模式
  • 贝叶斯优化相关
  • 【Matlab高端绘图SCI绘图全家桶更新版】在原60种绘图类型基础上更新
  • 如何构建一个 GraphRAG 系统
  • 代码随想录算法训练营day34
  • 单片机基础模块学习——按键
  • polars as pl
  • 重构(4)
  • 神经网络|(三)线性回归基础知识
  • deepseek R1 高效使用学习
  • STM32_SD卡的SDIO通信_基础读写
  • 【Docker】私有Docker仓库的搭建
  • linux 管道符、重定向与环境变量
  • Ansible fetch模块详解:轻松从远程主机抓取文件