Laravel - whereHas 查询未返回正确的记录

Laravel - whereHas query not returning correct records

我目前正在编写搜索查询,但在加入 wherewhereHas

时遇到问题

如果我只想搜索类别..

如果我只搜索类别,下面的查询有效

 $goals = $myGoals
        ->whereHas('categories', function ($q) use ($search) {
            $q->where('name', 'like', "%$search%");
        })->paginate(10);

如果我只想搜索标题..

如果我想单独搜索目标标题,同上

$goals = $myGoals->where('title', 'like', "%$search%" )->paginate(10);

如果我想单独搜索,这两个查询都有效。

查询尝试

下面是我编写的查询,允许用户搜索目标的 titlecategoryname

 $myGoals = $team->goals();

    $goals = $myGoals
        ->whereHas('categories', function ($q) use ($search) {
            $q->where('name', 'like', "%$search%");
        })->where('title', 'like', "%$search%" )->paginate(10);

我已经尝试了上述查询,但当我输入内容时搜索结果 return 为空。我也试过将 where() 换成 orWhere(),然后 return 是一个不属于 $team 模型实例的目标,但它是一个链接到不同模型实例的目标记录Team 模型 id 在枢轴 table 内。

谁能发现我哪里出错了?谢谢

你需要在where里面全部使用。

$goals = $myGoals->where(function ($query) use ($search){
                return $query->whereHas('categories', function ($q) use ($search) {
                    $q->where('name', 'like', "%$search%");
                })->orWhere('title', 'like', "%$search%" );
                })->paginate(10);