我正在尝试扩展我的站点搜索。您可以立即搜索商品的标题或说明。每个报价都有一个主题。主题有一个名字。我也想搜索主题名称,但是它不能正常工作。这是我尝试的距离:
$adverts = Advert::orderBy('created_at', 'desc')->active();
if($search)
$adverts = $adverts->whereHas('subjects', function($q) use ($search)
{
$q->where('name', 'like', '%$search%');
})
->where(function($query) use ($search) {
$query->where("title", "like", "%$search%");
$query->orWhere("description", "like", "%$search%");
})
->get();
没有任何问题,但是查询没有找到主题名称与搜索类似的任何“优惠”。
你有什么建议吗?
谢谢
where
Laravel中该函数的默认布尔运算符为AND
。这意味着您的代码实际上是在说:
其中名称包含$ search AND标题或说明包含$ search
显然,您想要的是OR
那里。
因此,只需将where
after更改whereAs
为orWhere
。
$adverts = $adverts->whereHas('subjects', function($q) use ($search)
{
$q->where('name', 'like', '%$search%');
})
->orWhere(function($query) use ($search) {
$query->where("title", "like", "%$search%");
$query->orWhere("description", "like", "%$search%");
})
->get();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句