美文网首页
laravel操作mysql中JSON类型的字段

laravel操作mysql中JSON类型的字段

作者: 老王和坑坑 | 来源:发表于2019-01-03 13:37 被阅读0次

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, \'$."颜色"\')')
]);

相关文章

网友评论

      本文标题:laravel操作mysql中JSON类型的字段

      本文链接:https://www.haomeiwen.com/subject/tqefrqtx.html