如何使用具有多个 table 的会话和使用 Laravel 的 where 子句进行搜索?

How to search using session with multiple table with where caluse using Laravel?

如何操作?

**此代码有效**

    $posts = NewJob::with(['client_info','office_info'])
      ->orderBy('won', 'desc')
      ->where('progress' , 'forwarded')
      ->where('won', 'like', '%' . $request->session()->get('search') . '%')
      ->paginate(5);        

============================================= =========================== 但是当我添加更多 where 子句然后显示空白结果时。

  $posts = NewJob::with(['client_info','office_info'])
      ->orderBy('won', 'desc')
      ->where('progress' , 'forwarded')
      ->where('won', 'like', '%' . $request->session()->get('search') . '%')
      ->where('proj_name', 'like', '%' . $request->session()->get('search') . '%')
      ->paginate(5);

这样就可以了。 您也可以根据需要使用一个 orWhere 条件而不是两个。

$posts = NewJob::with('client_info','office_info')
  ->orderBy('won', 'desc')
  ->where('progress' , 'forwarded')
  ->where('won', 'like', '%' . $request->session()->get('search') . '%')
  ->orWhere('proj_name', 'like', '%' . $request->session()->get('search') . '%')
  ->paginate(5);

对于连接意味着说关系,你可以这样做。 我已经为你的一个模型编写了代码,你可以像这样为其他模型编写代码,你也可以在 with() 函数中使用闭包函数。您也可以在不同型号上使用 orWhereHas

$posts = NewJob::whereHas('client_info', function($query){
      $query->where('something','is_something'); //query conditions on other table
      $query->orWhere('something','is_something');
  })
  ->orderBy('won', 'desc')
  ->where('progress' , 'forwarded')
  ->where('won', 'like', '%' . $request->session()->get('search') . '%')
  ->orWhere('proj_name', 'like', '%' . $request->session()->get('search') . '%')
  ->paginate(5);