如何在Laravel的不同表中搜索数据?

时间:2019-10-02 09:55:16

标签: laravel search

我是laravel的新手,我试图在数据库中的表中搜索数据。

  

这是我的路线代码

Route::get('/search','StudentController@search');
Route::get('/search','ProfessorController@search');
  

这是教授的搜索功能代码

  public function search(Request $request)
    {   
        $search = $request->get('search');
        $professors = DB::table('professors')->where('name', 'like','%'.$search.'%')->paginate(4);
        return view('professor.index', ['professors' => $professors]);  
    }
  

这是学生的搜索功能代码

 public function search(Request $request)
    {   
        $search = $request->get('search');
        $students = DB::table('students')->where('lastname', 'like','%'.$search.'%')->paginate(4);
        return view('student.index', ['students' => $students]);  
    }
  

这是教授的查看代码

        <form action="/search" method="GET">
                   <div class="input-group">
                      <input type="search" name="search" class="form-control">
                        <span class="input-group-prepend">
                        <button type="submit" class="btn btn-primary bouton">Search</button>
                        </span>
                   </div>
       </form>
  

这是给学生的

 <form action="/search" method="GET">
             <div class="input-group">
               <input type="search" name="search" class="form-control">
               <span class="input-group-prepend">
           <button type="submit" class="btn btn-primary bouton">Search</button>
               </span>
            </div>
 </form>

现在!我遇到的问题是,当我尝试在学生视图中搜索数据时,它将带我进入教授视图,而当我切换路线时,它总是执行拉特路线!

  

我真的很清楚我的问题,如果有人帮助我,我将非常高兴!

4 个答案:

答案 0 :(得分:0)

它们与Laravel相同。它怎么知道您想要哪一个。稍微修改即可。

Route::get('/search-students','StudentController@search');
Route::get('/search-professors','ProfessorController@search');

答案 1 :(得分:0)

您的路线应与其他路线不同。

对于学生

Route::get('student/search','StudentController@search')->name('student.search');

<form action="{{ route('student.search')}}" method="GET">
</form>

对于教授

Route::get('professor/search','ProfessorController@search')->name('professor.search');
<form action="{{ route('professor.search')}}" method="GET">
</form>

答案 2 :(得分:0)

  

如果您想获得动态结果,请使用此方法,从而无需创建   每次都有新的路线和方法。只需传递额外的参数即可。

将路线更改为

Route::get('/search/{model?}','StudentController@search');

和表格

<form action="/search/students" method="GET">
<form action="/search/professors" method="GET">

并在控制器中

$result = DB::table($request->model)->where('name', 'like','%'.$search.'%')->paginate(4);

答案 3 :(得分:0)

您只需要以下if语句:

 public function search(Request $request)
{   
    $search = $request->get('search');
    if($search){
    $professors = DB::table('professors')->where('name', 
    'like','%'.$search.'%')->paginate(4);
    } else { 
    $professors = Professor::all(); 
    }
     return view('professor.index', ['professors' => 
     $professors]); 


}

因此,在您的代码中可能是这样的:

{{1}}