JsonQ高级过滤实战:whereIn、whereNull与whereContains模糊查询技巧
2026/8/16 19:22:11 网站建设 项目流程

JsonQ高级过滤实战:whereIn、whereNull与whereContains模糊查询技巧

【免费下载链接】jsonqA PHP query builder for JSON项目地址: https://gitcode.com/gh_mirrors/js/jsonq

JsonQ是一款优雅的PHP JSON查询构建器,它让开发者可以用类似ORM的方式对JSON数据进行查询过滤。本文面向PHP新手,通过whereIn、whereNull与whereContains三个高频方法,带你快速掌握JsonQ高级过滤的核心技巧,让JSON数据处理从繁琐的循环遍历中解放出来。

一、为什么需要JsonQ高级过滤?🤔

日常开发中,我们经常要处理接口返回的JSON数据:筛选某个分类下的商品、排除空值字段、模糊搜索用户名称。传统做法是写多层foreach循环加if判断,代码冗长且难以维护。而JsonQ高级过滤功能只需一行链式调用即可完成,可读性直接拉满。

JsonQ的核心源码位于 src/Jsonq.php,查询引擎则继承自 QArray,完整的API文档可参考 README.md 和 examples/ 目录下的示例文件。

二、快速入门:安装与加载数据

使用 Composer 一条命令即可完成安装:

composer require nahid/jsonq

安装后,通过from()方法指定要查询的JSON数据段(本文以 examples/data.json 中的products商品列表为例),即可开始高级过滤。下面我们逐一拆解三个实战技巧。

三、whereIn:多值匹配的终极便捷写法

当你要筛选多个指定值的数据时,whereIn是最佳选择。它等价于where(key, 'in', val),参数为一个数组。

实战场景:找出商品分类cat属于 [1, 2] 的所有商品:

$res = $json->from('products') ->whereIn('cat', [1, 2]) ->get();

相比用多个orWhere拼接条件,whereIn让代码更简洁、意图更清晰。它还配套了whereNotIn()反向过滤,用法完全一致,非常适合做"排除指定ID"的批量操作。

四、whereNull与whereNotNull:空值处理技巧

JSON数据中经常存在null字段,例如商品表中部分商品缺少城市字段。whereNull专门用于筛选字段值为null的记录,whereNotNull则恰好相反。

实战场景:找出city字段为空的所有商品:

$res = $json->from('products') ->whereNull('city') ->get();

反向场景:找出所有已填写城市信息的商品:

$res = $json->from('products') ->whereNotNull('city') ->get();

这两个方法在数据清洗、报表统计时非常实用,可以快速剔除脏数据或空记录。

五、whereContains:一行实现模糊查询

模糊查询是搜索功能的标配。whereContains会检查字段值是否包含指定子串,等价于 SQL 中的LIKE '%关键词%'

实战场景:搜索商品名称中包含 "Macbook" 的所有商品:

$res = $json->from('products') ->whereContains('name', 'Macbook') ->get();

如果你需要更精确的前缀、后缀匹配,JsonQ还提供了whereStartsWithwhereEndsWith,三者组合可以覆盖绝大多数模糊查询场景。

六、组合使用:让高级过滤威力翻倍 💪

JsonQ支持链式组合,多个条件默认按 AND 逻辑叠加,配合orWhere即可构建复杂的过滤表达式。

综合实战:筛选分类为2、城市不为空、且名称含 "Mac" 的商品:

$res = $json->from('products') ->whereIn('cat', [1, 2]) ->whereNotNull('city') ->whereContains('name', 'Mac') ->get();

这种写法与Laravel Eloquent的风格高度一致,熟悉框架的开发者几乎零成本上手。

七、进阶补充:过滤后还能做什么?

JsonQ的高级过滤只是第一步,查询结果还可以继续链式调用聚合方法:sum()求和、count()计数、max()求最大值、groupBy()分组统计。例如统计过滤后商品的总价:

$total = $json->from('products') ->whereNotNull('city') ->sum('price');

各聚合方法的独立示例可参考 examples/sum.php、examples/count.php、examples/group-by.php 等文件,测试用例则位于 tests/ConditionTest.php。

八、小结:三个技巧,一次掌握

方法作用适用场景
whereIn / whereNotIn多值包含匹配批量筛选ID、分类
whereNull / whereNotNull空值判断数据清洗、必填校验
whereContains / whereStartsWith / whereEndsWith字符串模糊匹配搜索、前缀后缀过滤

JsonQ高级过滤让PHP开发者可以用几行代码完成过去十几行的循环逻辑。现在就从from()whereContains()开始你的第一个实验吧,你会发现查询JSON从未如此简单。🚀

【免费下载链接】jsonqA PHP query builder for JSON项目地址: https://gitcode.com/gh_mirrors/js/jsonq

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询