代码之家  ›  专栏  ›  技术社区  ›  cespon Tom

拉斐尔5.8:或何处,何处有效力

  •  1
  • cespon Tom  · 技术社区  · 6 年前

    Profile::whereHas('accounts', function ($query) use ($id) { 
            $query->where('user_id', $id); 
        })
        ->where('username', 'LIKE', "%{$search}%")
        ->paginate(20);
    
    • 这个 whereHas 选择用户使用的配置文件 $id
    • 然后,用 where 我们会找出搜索结果是否与 用户名 在数据库中。
    • 最后,我们对结果进行分页。

    当我添加一个 orWhere

    Profile::whereHas('accounts', function ($query) use ($id) { 
            $query->where('user_id', $id); 
        })
        ->where('username', 'LIKE', "%{$search}%")
        ->orWhere('fullname', 'LIKE', "%{$search}%")
        ->paginate(20);
    

    我希望查询分析搜索是否匹配 和/或 . 当我添加 有效,但是 哪里有 不做它的工作,结果来自所有用户。

    1 回复  |  直到 6 年前
        1
  •  2
  •   dave    6 年前

    你需要这样做:

    Profile::whereHas('accounts', function ($query) use ($id) { 
        $query->where('user_id', $id); 
    })
    ->where(function($query) use ($search) {
        $query->where('username', 'LIKE', "%{$search}%")
              ->orWhere('fullname', 'LIKE', "%{$search}%");
    })
    ->paginate(20);