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

Laravel中如何基于两列实现数据库查询及搜索分页功能

调整Laravel查询以支持两列模糊搜索

没问题,我帮你把这段代码改成支持两列数据的模糊搜索逻辑。这里我假设你要新增搜索的列是title(你可以根据实际需求替换成你需要的列名,比如name、content等),同时还优化了搜索词为空时的查询逻辑,避免不必要的LIKE %%条件:

$search = $request->get('search');

// 初始化查询
$projects = Project::query();

// 仅当存在搜索词时,添加两列的模糊搜索条件
if ($search) {
    $projects->where(function ($query) use ($search) {
        $query->where('description', 'like', '%' . $search . '%')
              ->orWhere('title', 'like', '%' . $search . '%'); // 这里替换成你的第二列
    });
}

// 保持排序、分页和带搜索参数的路径
$projects = $projects->orderBy('id')
                     ->paginate(10)
                     ->withPath($search ? '?search=' . $search : '');

return view('projects.index', compact('projects'));

关键说明:

  • 用闭包包裹where和orWhere是为了确保这两个条件是逻辑或的关系,不会和后续可能添加的其他查询条件冲突(比如如果以后加状态过滤,不会出现逻辑错误)。
  • 新增了搜索词为空的判断,这样当用户没有输入搜索内容时,会返回所有项目,而不是执行一个无意义的like %%查询。
  • 如果你需要支持更多列,只需要在闭包里继续添加->orWhere('列名', 'like', '%' . $search . '%')即可。

额外优化(可选):

如果你想让搜索更灵活,比如支持大小写不敏感(不同数据库处理方式略有不同):

  • MySQL:默认是不区分大小写的,不需要额外处理;
  • PostgreSQL:把like改成ilike即可;
  • 跨数据库兼容:可以用Laravel的whereRaw配合数据库函数,比如whereRaw('LOWER(description) like ?', ['%' . strtolower($search) . '%'])。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:11:12