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

Laravel中如何拼接uploadDate与uploadTime列实现LIKE模糊查询?

解决方案:拼接字段实现跨列模糊查询

当然可以!不用修改数据库结构,直接在Laravel查询构造器里通过数据库的字符串拼接函数,把uploadDate和uploadTime合并成符合你搜索格式的字符串,就能匹配到yyyy-mm-dd, hh:mm:ss格式的搜索值了。

针对MySQL/MariaDB的写法

用CONCAT函数拼接两个字段,注意要加上搜索值里的, 分隔符,推荐用whereRaw结合参数绑定的写法(更安全,避免SQL注入):

->orWhereRaw("CONCAT(uploadDate, ', ', uploadTime) LIKE ?", ['%' . $request->search . '%'])

如果你习惯用orWhere搭配DB::raw,也可以这么写:

->orWhere(DB::raw("CONCAT(uploadDate, ', ', uploadTime)"), 'like', '%' . $request->search . '%')

针对PostgreSQL的写法

PostgreSQL支持CONCAT函数,也支持||拼接运算符,两种写法都可行:

// 用CONCAT函数
->orWhereRaw("CONCAT(uploadDate, ', ', uploadTime) LIKE ?", ['%' . $request->search . '%'])

// 用||运算符
->orWhereRaw("(uploadDate || ', ' || uploadTime) LIKE ?", ['%' . $request->search . '%'])

为什么原来的写法查不到?

你之前的查询是分别对uploadDate和uploadTime做模糊匹配,但当搜索值是完整的yyyy-mm-dd, hh:mm:ss时,uploadDate字段里没有时间部分,uploadTime字段里没有日期部分,自然找不到匹配的结果。拼接后相当于把两个字段合并成了一个符合搜索格式的字符串,就能精准匹配啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:18:05