JSON fields (query builder 11)


JSON data writing

$user['name'] = 'thinkphp';
$user['info'] = [
	'email'    => 'thinkphp@qq.com',
	'nickname' => '流年',
];
Db::name('user')
	->json(['info'])
	->insert($user);

JSON data query

Query the entire JSON Data:

$user = Db::name('user')
	->json(['info'])
	->find(1);
dump($user);

The query condition is JSON data

$user = Db::name('user')
	->json(['info'])
    ->where('info->nickname','ThinkPHP')
	->find();
dump($user);

Since the attribute type of the JSON field is not automatically obtained, if it is an integer data query, you can set the JSON field type, for example :

$user = Db::name('user')
	->json(['info'])
    ->where('info->user_id', 10)
	->setFieldType(['info->user_id' => 'int'])
	->find();
dump($user);

JSON data update

Complete JSON data update

$data['info'] = [
	'email'    => 'kancloud@qq.com',
	'nickname' => 'kancloud',
];
Db::name('user')
	->json(['info'])
    ->where('id',1)
	->update($data);

Single JSON data update

$data['info->nickname'] = 'ThinkPHP';
Db::name('user')
	->json(['info'])
    ->where('id',1)
	->update($data);