Laravel - whereHas 查询未返回正确的记录
Laravel - whereHas query not returning correct records
我目前正在编写搜索查询,但在加入 where
和 whereHas
时遇到问题
如果我只想搜索类别..
如果我只搜索类别,下面的查询有效
$goals = $myGoals
->whereHas('categories', function ($q) use ($search) {
$q->where('name', 'like', "%$search%");
})->paginate(10);
如果我只想搜索标题..
如果我想单独搜索目标标题,同上
$goals = $myGoals->where('title', 'like', "%$search%" )->paginate(10);
如果我想单独搜索,这两个查询都有效。
查询尝试
下面是我编写的查询,允许用户搜索目标的 title
和 category
的 name
。
$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);
我目前正在编写搜索查询,但在加入 where
和 whereHas
如果我只想搜索类别..
如果我只搜索类别,下面的查询有效
$goals = $myGoals
->whereHas('categories', function ($q) use ($search) {
$q->where('name', 'like', "%$search%");
})->paginate(10);
如果我只想搜索标题..
如果我想单独搜索目标标题,同上
$goals = $myGoals->where('title', 'like', "%$search%" )->paginate(10);
如果我想单独搜索,这两个查询都有效。
查询尝试
下面是我编写的查询,允许用户搜索目标的 title
和 category
的 name
。
$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);