thinkphp5 mysql json_JSON字段

本文介绍了ThinkPHP5从V5.1.4版本开始支持的JSON数据字段操作,包括如何写入、查询、更新JSON数据,以及如何设置JSON数据返回数组。示例代码展示了如何在模型中定义JSON字段,以及使用数组和对象方式写入数据,通过查询条件为JSON数据进行查找。
摘要由CSDN通过智能技术生成

本章内容为`V5.1.4+`版本开始支持,可以更为方便的操作模型的JSON数据字段。

> 这里指的JSON数据包括JSON类型以及JSON格式(但并不是JSON类型字段)的数据

我们修改下User模型类

~~~

namespace app\index\model;

use think\Model;

class User extends Model

{

// 设置json类型字段

protected $json = ['info'];

}

~~~

定义后,可以进行如下JSON数据操作。

## 写入JSON数据

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

~~~

$user = new User;

$user->name = 'thinkphp';

$user->info = [

'email' => 'thinkphp@qq.com',

'nickname '=> '流年',

];

$user->save();

~~~

使用对象方式写入JSON数据

~~~

$user = new User;

$user->name = 'thinkphp';

$info = new \StdClass();

$info->email = 'thinkphp@qq.com';

$info->nickname = '流年';

$user->info = $info;

$user->save();

~~~

## 查询JSON数据

~~~

$user = User::get(1);

echo $user->name; // thinkphp

echo $user->info->email; // thinkphp@qq.com

echo $user->info->nickname; // 流年

~~~

查询条件为JSON数据

~~~

$user = User::where('info->nickname','流年')->find();

echo $user->name; // thinkphp

echo $user->info->email; // thinkphp@qq.com

echo $user->info->nickname; // 流年

~~~

如果你需要查询的JSON属性是整型类型的话,可以在模型类里面定义JSON字段的属性类型,就会自动进行相应类型的参数绑定查询。

~~~

namespace app\index\model;

use think\Model;

class User extends Model

{

// 设置json类型字段

protected $json = ['info'];

// 设置JSON字段的类型

protected $jsonType = [

'info->user_id'=>'int'

];

}

~~~

没有定义类型的属性默认为字符串类型,因此字符串类型的属性可以无需定义。

`V5.1.17+`版本开始,可以设置模型的`JSON`数据返回数组,只需要在模型设置`jsonAssoc`属性为`true`。

~~~

namespace app\index\model;

use think\Model;

class User extends Model

{

// 设置json类型字段

protected $json = ['info'];

// 设置JSON数据返回数组

protected $jsonAssoc = true;

}

~~~

设置后,查询代码调整为:

~~~php

$user = User::get(1);

echo $user->name; // thinkphp

echo $user->info['email']; // thinkphp@qq.com

echo $user->info['nickname']; // 流年

~~~

## 更新JSON数据

~~~php

$user = User::get(1);

$user->name = 'kancloud';

$user->info->email = 'kancloud@qq.com';

$user->info->nickname = 'kancloud';

$user->save();

~~~

如果在`V5.1.17+`版本以后,并且设置模型的`JSON`数据返回数组,那么更新操作需要调整如下。

~~~php

$user = User::get(1);

$user->name = 'kancloud';

$info['email'] = 'kancloud@qq.com';

$info['nickname'] = 'kancloud';

$user->info = $info;

$user->save();

~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值