Как мне искать данные в разных таблицах в laravel? - PullRequest
0 голосов
/ 02 октября 2019

Я новичок в 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 голосов
/ 02 октября 2019

Вам просто нужно, если выражение выглядит следующим образом:

 public function index()
 {
    $search = request()->query('search');

    if ($search) {
        $posts = Post::where('title', 'LIKE', '%'.$search.'%')->simplePaginate(1);
    } else {
        $posts = Post::simplePaginate(3);
    }
    return view('welcome')
        ->with('categories', Category::all())
        ->with('tags', Tag::all())
        ->with('posts', $posts);
    }

, поэтому в вашем коде это может выглядеть так:

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


}
0 голосов
/ 02 октября 2019

Ваш маршрут должен отличаться друг от друга.

Для студента

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>
0 голосов
/ 02 октября 2019

Если вы хотите динамический результат, используйте этот подход, чтобы вам не нужно было каждый раз создавать новые маршруты и методы. Просто передайте дополнительный параметр.

Измените ваши маршруты на

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);
0 голосов
/ 02 октября 2019

Они одинаковы для Laravel. Как бы он знал, какой вы хотите. Небольшая модификация подойдет.

Route::get('/search-students','StudentController@search');
Route::get('/search-professors','ProfessorController@search');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...