Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel中查询关系_Php_Laravel - Fatal编程技术网

Php 在Laravel中查询关系

Php 在Laravel中查询关系,php,laravel,Php,Laravel,我正在尝试扩展我的网站搜索。您可以立即搜索报价的标题或描述。每个报价都有一个主题。主体有一个名称。我也想搜索主题名称,但我无法让它工作。 这就是我所做的努力: $adverts = Advert::orderBy('created_at', 'desc')->active(); if($search) $adverts = $adverts->whereHas('subjects', function($q) use ($search) { $q-&

我正在尝试扩展我的网站搜索。您可以立即搜索报价的标题或描述。每个报价都有一个主题。主体有一个名称。我也想搜索主题名称,但我无法让它工作。 这就是我所做的努力:

$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();
没有任何内容被破坏,但查询不会像搜索一样找到任何主题名称为的报价

你有什么建议吗


谢谢

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

其中名称包含$search和title,或者说明包含$search

显然,你想要的是一个

因此,只需将
之后的
where
更改为
或where

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

我很确定
whereHas
后面的
where
应该是
。我建议使用双引号或连接变量。谢谢@lukasgeiter您修复了它@好极了!我要写一个答案,这样你就可以接受了:)