注意事项
- MySql 版本 >= 5.7
- 数所库存储 json 字段的类型必须是 json类型。
- 如果 json 中的值有整数,必须查询时使用 setFieldType([‘info->age’=>‘int’]) 说明
一、数据库 JSON
- 数据库写入,查询 JSON 字段,可以通过数组方式完成
$data = [
'name' => '张三',
'age' => 18
'list' => ['addrss'=>'在家',15],
];
//写入
Db::name('user')->json(['list'])->insert($data);
//查询
Db::name('user')->json(['list'])->find(12);
- 将 json 字段里的数据作为查询条件
$user = Db::name('user')
->josn(['list'])
->where('list->age',13)
->setFieldType(['list->age'=>'int'])
->find();
- 修改 json 数据
//完全修改
$data['list']=['name'=>'李四','gender'=>'男'];
Db::name('user')->json(['list'])->where('id',278)->update($data);
//部分修改
$data['list->name']='王五';
Db::name('user')->json(['list'])->where('id',23)->update($data);
二、模型JSON
1.写入,查询的 json 字段,
//模型端
protected $json=['list'];
//控制器端
//模型方法新增包含字段
$user = new UserModel();
$user->name = '张三';
$user->list = ['name'=>'张三','gender'=>'女'];
$user->save();
- 通过对象方式,进行对 json 字段的写入操作
$user = new UserModel();
$list = new \StdClass();
$list->name = '李四';
$list->gender = '男';
$user->list = $list;
$user->save();
- 通过对象调用方式,直接获取 json 里面的数据
$user = UserModel::find(1);
return $user->list->name;
- 通过 json 的数据查询,获取一条数据
$user = UserModel::where('list->username','李四')->find();
- 更新修改 json 数据 ,直接通过对象方式
$user = UserModel::find(237);
$user->list->name='王五';
$user->save();