在Laravel中查询关系

强力

我正在尝试扩展我的站点搜索。您可以立即搜索商品的标题或说明。每个报价都有一个主题。主题有一个名字。我也想搜索主题名称,但是它不能正常工作。这是我尝试的距离:

$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();

没有任何问题,但是查询没有找到主题名称与搜索类似的任何“优惠”。

你有什么建议吗?

谢谢

Lukasgeiter

whereLaravel中函数的默认布尔运算符为AND这意味着您的代码实际上是在说:

其中名称包含$ search AND标题或说明包含$ search

显然,您想要的是OR那里。

因此,只需将whereafter更改whereAsorWhere

$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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章