MySQL 5.7.8开始支持 json类型. laravel也从5.3开始加入了json类型的支持
原文:https://wyzheng.cn/detail/2
创建表
create table json_demo
(
id int auto_increment primary key,
attr json not null -- 创建JSON类型的字段
);
插入
使用SQL
insert into json_demo values(1,'{"颜色":"黑色","尺寸":"XXL"}');
insert into json_demo values(2,'{"颜色":"白色","尺寸":"XL"}');
使用laravel
要先在model里声明json
class JsonDemo extends Model
{
protected $table = 'json_demo';
protected $guarded = ['id'];
protected $casts = [
'attr' => 'json', // 声明json类型
];
}
JsonDemo::create([
// 此处插入数组(会自动转成json)
'attr' => [
'颜色' => '黑色',
'尺寸' => 'XXL'
]
])
查询
使用sql
select * from json_demo where `attr`->'$.颜色'= '黑色'
使用laravel
JsonDemo::where('attr->颜色','黑色')->get()
修改
使用sql
update json_demo set attr=json_set(attr,'$.颜色','黑') where id = 1
使用 laravel
JsonDemo::where('attr->尺寸','XL')->update([
'attr->尺寸' => 'XXL'
]);
删除
使用sql
update json_demo set attr = json_remove(`attr`, '$."颜色"') where id = 1
使用laravel
JsonDemo::where('id',1)->update([
'attr' => \DB::raw('json_remove(attr, \'$."颜色"\')')
]);
网友评论