ThinkPHP中使用Mysql的json语法中的JSON_CONTAINS进行查询
在ThinkPHP框架中,虽然支持json,但是仅仅是提供了写入和查询时,自动转化的功能,如:
写入:
$res = Test::json(['info'])->save($data);
此时的json其实是将info字段进行了json_encode操作,而读取数据时:
Test::json(['info'])->where('info->job','美术家')->find();
此时的json相当于是将读取出来的数据中的info字段进行了json_decode操作。
然而,在实际使用时,对JSON字段,我们还有很多其他的操作,本篇就来讲讲,当json是一个数组时,如何使用JSON_CONTAINS的方法:
在thinkphp中,使用json_contains需要借助whereExp或者whereRaw的形式:
Role::whereRaw("JSON_CONTAINS(rules, '\"4\"')")->select(); // 正确
Role::whereRaw('JSON_CONTAINS(rules, "4")')->select(); // 错误
Role::whereRaw("JSON_CONTAINS(rules, '4')")->select(); // 错误
之所以第一种写法是正确的,而其他写法是错的,是因为JSON_CONTAINS函数的第二个参数要求是json格式,即便是文本,也应该是json文本,即使用双引号包裹的内容。
- CSS选择器:nth-child()的灵活用法及常见场景示例
CSS选择器中的nth-child()相信大家都比较熟悉,nth-child()和nth-of-type()的区别是:nth-child()不区分类型。大家经常
- 为什么你的logo图模糊不清,移动端图片虚化的解决方案
在传统pc时代的时候,几乎99%的网站都在使用图片格式作为logo,而大部分网站都使用了png透明底的图片来做网站的logo。但是进入移动时代之后,这种习惯还是
- 响应式网站布局的优缺点分析
响应式网站,通俗的讲就是使用CSS媒体查询技术,写一套代码,可以在多个终端上使用。在此之前,前端切图工作者是需要分别针对电脑端、移动端和平板等常见设备专门去写一
- 切图和前端什么关系?为什么前端又被称为切图仔?
很多初从事前端切图这个行业的新人,大多都有一个疑问?为什么要把前端开发人员称为切图仔呢?提起这个问题,我们还要从前端切图行业的发展历程来说起,当然,这个问题对与
- 目前主流的前端框架有哪些?
基本上每种语言都有对应的一些快速框架用于提升开发人员的效率,所谓框架更像是工具箱或者脚手架,在开发时如果能很好的利用框架可以起到事半功倍的效果。简单形象的说,如
- 移动端background-attachment: fixed失效解决方法
在做web前端切图时,我们经常需要做背景图片不跟随内容滚动的效果,这个时候就需要使用到background-attachment: fixed 属性,这个属性及