如何使用Laravel在多个表中使用会话与多表进行搜索?

时间:2019-09-18 10:05:08

标签: laravel-5.8

该怎么做?

**此代码有效**

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

1 个答案:

答案 0 :(得分:1)

这样您就可以做到。 您还可以根据需要使用一个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);