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

Laravel 8:如何为orWhere查询添加条件实现特定搜索逻辑

Laravel 8 搜索功能扩展:添加“show me”专属查询逻辑

修改后的代码实现

if (!empty($searchText)) {
    // 标准化搜索文本,消除大小写和空格干扰
    $normalizedSearch = strtolower(trim($searchText));
    
    if ($normalizedSearch === 'show me') {
        // 仅筛选已分配owner id的记录
        $customer->whereNotNull('owner_id');
        // 若需排除空字符串的owner_id,可替换为下方条件
        // $customer->where(function($query) {
        //     $query->whereNotNull('owner_id')
        //           ->where('owner_id', '!=', '');
        // });
    } else {
        // 保留原有搜索逻辑:关联details表,匹配name或product字段
        $customer->join('details', 'customers.details_id', '=', 'details.id');
        $customer->where('name', 'like', "%$searchText%")
                 ->orWhere("details.product", "like", "%$searchText%");
    }
}

关键说明

  • 文本标准化:通过strtolower和trim处理输入文本,确保用户输入“Show Me”“show me”这类变体时也能触发正确的查询逻辑。
  • 分支逻辑分离:
    • 当搜索文本为“show me”时,仅添加whereNotNull('owner_id')条件,无需关联details表,减少不必要的数据库关联开销。
    • 其他搜索场景保持原有逻辑不变,确保功能兼容性。
  • 特殊情况处理:如果业务中owner_id存在空字符串(而非null)的未分配状态,可启用注释中的闭包条件,同时排除null和空字符串的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:55:14