Mysql whereJsonContains 的使用

whereJsonContains的使用

因为平时会存储一些数据的json格式,比如我们把课程的一些信息使用json的格式存储起来了,如果想通过课程名称来查询数据,会有点费劲,但是使用whereJsonContains 就会很轻松,不过使用的时候也有一些需要注意的地方

插入表数据
INSERT INTO `posts` (`id`, `user_id`, `content`, `created_at`, `updated_at`)
VALUES
	(1, 1, '{\"id\":1,\"name\":\"大学生物必修课\",\"json_string\":{\"title\":\"课程1\",\"content\":\"母猪的产后护理\"}}', NULL, NULL),
	(2, 2, '{\"id\":2,\"name\":\"大学高数必修课\",\"json_string\":{\"title\":\"课程2\",\"content\":\"高斯的魔幻童年\"}}', NULL, NULL),
	(3, 2, '{\"id\":3,\"name\":\"大学音乐必修课\",\"json_string\":{\"title\":\"课程3\",\"content\":\"烤面筋\"}}', NULL, NULL),
	(4, 3, '{\"id\":4,\"name\":\"大学医学必修课\",\"json_string\":{\"title\":\"课程4\",\"content\":\"公牛受孕\"}}', NULL, NULL);

最后的样式
在这里插入图片描述

查询
return DB::table('posts')->whereJsonContains('content->json_string->content','母猪的产后护理')->get();
结果
[
    {
        "id": 1,
        "user_id": 1,
        "content": "{\"id\":1,\"name\":\"大学生物必修课\",\"json_string\":{\"title\":\"课程1\",\"content\":\"母猪的产后护理\"}}",
        "created_at": null,
        "updated_at": null
    }
]
需要注意的地方

数据库里面的查询列必须都要有,就是说content不能是空,不然就会返回空数据
在这里插入图片描述

比如这样的数据,如果使用上面的查询语句,是没有结果的

在这里插入图片描述
在这里插入图片描述

这样的数据就是可以查询到的,就是对于字符串类型的数据,可以使用空字符,但是id不能为空,ID必须给一个默认值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值