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

Laravel查询构建器多值搜索问题:拆分搜索词实现OR匹配

解决方案

你可以通过拆分搜索关键词,再逐个添加OR LIKE条件来实现需求,以下是两种可行的实现方式:

方式一:使用orWhere循环构建条件

$search_term = "Hary Kumar";
// 拆分搜索词为关键词数组,同时过滤空值(处理多空格情况)
$keywords = array_filter(explode(' ', trim($search_term)));

$filterData = DB::table('signups');

// 为每个关键词添加OR LIKE条件
foreach ($keywords as $keyword) {
    $filterData->orWhere('name', 'LIKE', "%{$keyword}%");
}

这段代码会生成你需要的SQL语句:

select * from signups where name like "%Hary%" or name like "%Kumar%"

方式二:使用whereRaw拼接条件

$search_term = "Hary Kumar";
$keywords = array_filter(explode(' ', trim($search_term)));

// 生成每个关键词对应的LIKE条件片段
$conditions = array_map(function($keyword) {
    return "name LIKE '%{$keyword}%'";
}, $keywords);

// 用OR拼接所有条件,通过whereRaw加入查询
$filterData = DB::table('signups')
    ->whereRaw(implode(' OR ', $conditions));

注意事项

  • 使用array_filter是为了处理搜索词中包含多个连续空格的情况,避免生成无效的LIKE '%%'条件。
  • 如果需要区分大小写,可以根据数据库类型调整,比如MySQL中可以用LIKE BINARY,或者在查询时设置大小写敏感规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:30:59