You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Eloquent如何在单个where子句实现同字段多值判断

合并同字段多NOT LIKE条件的实现方案

你原来的链式写法默认通过AND逻辑拼接所有条件,要求mime_type同时不满足四个前缀匹配规则,可以直接合并为单个条件调用,筛选效果和原写法完全一致,最简洁的实现如下:

->whereRaw('mime_type NOT REGEXP ?', ['^(image|video|audio|application)'])

规则说明

  • 正则中的^表示从字符串起始位置开始匹配,(image|video|audio|application)匹配四个目标前缀中的任意一个,逻辑等价于你原来写的四个NOT LIKE 'xxx%'的AND组合,不会出现筛选结果差异。
  • 写法采用参数绑定传参,不会引入SQL注入风险,符合Eloquent的编码规范。
  • 由于是固定前缀匹配,只要mime_type字段建立了普通索引,这个写法的查询性能和你原来的多个LIKE链式写法基本一致,不会出现性能下降。
  • 如果你需要匹配标准MIME格式(前缀后必须跟斜杠,比如image/png、video/mp4),可以把正则规则调整为'^(image|video|audio|application)/',避免误过滤类似imagecustom这类非标准前缀的记录。

适配提示:如果你使用的是PostgreSQL数据库,只需要把NOT REGEXP替换为!~即可,正则匹配规则不需要改动;如果是SQLite数据库,NOT REGEXP语法可以直接使用,无需调整。

内容的提问来源于stack exchange,提问作者user19279473

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 15:03:10