ThinkPHP中JSON字段类型的使用示例

  介绍

这篇文章主要介绍ThinkPHP中JSON字段类型的使用示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

ThinkPHP5.1版本正式发布已经有一段时间了,我会陆续给大家介绍其中的新特性。今天要给大家介绍的是一个可能很多用户还不了解的一个特性:JSON字段数据支持。

不过首先注意一点,本篇内容中描述的JSON字段数据的支持是从V5.1.4 +版本引入的。由于包含安全更新的原因,建议确保使用5.1.9 +版本。

本篇中对JSON字段的定义包括JSON类型或者保存的数据为JSON格式的字符类型,所以理论上除了使用JSON字段条件查询外,对数据库类型和版本没有要求。

<强> Db类操作JSON

如果你没有使用模型类,Db类提供了一个JSON方法可以指定你的数据表JSON格式字段,例如你的用户表有一个信息字段是JSON类型的,你可以使用下面的方式操作数据。

<强>数据写入

$ user(& # 39;名字# 39;],=,& # 39;thinkphp& # 39;;   $用户[& # 39;信息# 39;],=,(   & # 39;电子邮件,,,,,=祝辞,& # 39;thinkphp@qq.com& # 39;   & # 39;昵称# 39;,=祝辞,& # 39;流年& # 39;,   ];   Db:名称(& # 39;用户# 39;)   →json([& # 39;信息# 39;])   →插入($ user);

json方法的参数是一个数组,示例中指定了信息字段,其实可以指定多个json类型字段。

<强>数据查询

查询整个json数据使用。

user 美元;=,Db:名称(& # 39;用户# 39;)   →json([& # 39;信息# 39;])   →找到(1);   转储($ user);

返回的查询结果数据中,会自动包含一个数组类型的信息数据,也就是说JSON格式数据已经自动json_decode处理。

该方式查询对信息字段并非严格要求使用JSON类型

如果需要根据JSON数据的值进行查询,可以使用下面的方法

user 美元;=,Db:名称(& # 39;用户# 39;)   →json([& # 39;信息# 39;])   ,,,,,(& # 39;信息→昵称# 39;,& # 39;ThinkPHP& # 39;)   →找到();   转储($ user);

要求信息字段必须是JSON类型,MySQL需要5.7 +版本才能支持

当然,也可以支持多级

user 美元;=,Db:名称(& # 39;用户# 39;)   →json([& # 39;信息# 39;])   ,,,,,(& # 39;信息→资料→昵称# 39;,& # 39;ThinkPHP& # 39;)   →找到();   转储($ user);

由于JSON字段的属性类型并不会自动获取,所以,如果是整型数据查询的话,需要手动参数绑定,例如:

user 美元;=,Db:名称(& # 39;用户# 39;)   →json([& # 39;信息# 39;])   ,,,,,(& # 39;信息→user_id # 39;,, & # 39;: user_id # 39;)   ,,,→绑定((& # 39;user_id # 39;,=祝辞,[10,\ PDO: PARAM_INT]])   →找到();   转储($ user);

<强>数据更新

完整JSON数据更新

$ data[& # 39;信息# 39;],=,(   & # 39;电子邮件,,,,,=祝辞,& # 39;kancloud@qq.com& # 39;   & # 39;昵称# 39;,=祝辞,& # 39;kancloud& # 39;   ];   Db:名称(& # 39;用户# 39;)   →json([& # 39;信息# 39;])   ,,,,,(& # 39;id # 39;, 1)   →更新(元数据);

该方式查询对信息字段并非严格要求使用JSON类型

如果只是更新JSON数据中的某个值,则可以使用下面的方法:

$ data[& # 39;信息→昵称# 39;],=,& # 39;ThinkPHP& # 39;;   Db:名称(& # 39;用户# 39;)   →json([& # 39;信息# 39;])   ,,,,,(& # 39;id # 39;, 1)   →更新(元数据);

同样要求信息字段必须是JSON类型

<强>模型操作JSON数据

如果你使用的是模型操作数据库的话,那么JSON数据操作就更简单了。

我们只要给用户模型类增加一个JSON属性定义即可。

& lt; php ?   namespace 应用\ \指数模型;   use 认为\模式;   class  User  extends 模型   {//,设置json类型字段   protected  json 美元;=,(& # 39;信息# 39;);   }

json属性同样支持定义多个字段名称,定义后,可以进行如下json数据操作。

<强>写入数据

使用数组方式写入json数据:

user 美元;=,new 用户;=$ user→name  & # 39; thinkphp& # 39;;=$ user→info  (   & # 39;电子邮件,,,,,=祝辞,& # 39;thinkphp@qq.com& # 39;   ,,,& # 39;nickname  & # 39;=祝辞,& # 39;流年& # 39;,   ];   $ user→保存();

ThinkPHP中JSON字段类型的使用示例