麻烦大佬给看看这种sql条件用Laravel ->where怎么实现

(title REGEXP '\d*[A-Z-][A-Z0-9-_.]*\d+[A-Z]*') = 0 and
(title REGEXP '[A-Z-]{2,}[0-9]{2,}') = 0 and
(title REGEXP '[A-Z-]{6,}') = 0  and
(title REGEXP '\d{3,}(?!(?:个|元|台|支|块|只|粒|筒|米|尺|把|卷|盒|枚|套|本|包|张|页|g|cm|mm|ml|um|y|k))') = 0

我想把上面的条件用->where实现然后追加到$orWhereSKU条件数组后面

$orWhereSKU[] = ['title', 'like', '%'.$item.'%', 'OR'];
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

这种只能用whereRaw了

1年前 评论
ImVic (楼主) 1年前
讨论数量: 12

这种只能用whereRaw了

1年前 评论
ImVic (楼主) 1年前

SQL ,先不说实现把,这需求就有问题吧。

1年前 评论

用mysql做搜索不太合适

1年前 评论

类似 SELECT name FROM person_tbl WHERE name REGEXP ‘^st’; 这样。

但是现实中很少有人这样使用,原因是数据库不适合这样查询,数据量大的话会极其慢。

所以更适合使用 elasticsearch 来达成目标,而不是使用sql语句。

1年前 评论
SammlHui 1年前

这sql 您才是大佬 :joy:

1年前 评论

我再给一种思路,假设,因为条件不允许安装es,则,给此表再加4个字段,title1,title2,title3,titl4,那么给这个表加记录时,如果满足条件1,则title1=1,否则title1=0

于是,当查询时,只需 查title1=1 ,即可满足当时设定的条件了。

同时也回避了复杂的sql语句,最重要的是,加快了查询速度。

1年前 评论
ImVic (楼主) 1年前
ImVic (楼主) 1年前
yyy123456 (作者) 1年前
ImVic (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!