2017-09-17 7 views
1

私はデータベースから生徒の名前を検索する検索ボックスを持っています。1つの検索ボックスを使用してデータベース内のさまざまなアイテムを検索します

同じ検索ボックスを使用して、同じクラスのすべての生徒を表示したいと思います。例えば;

私が持っているもの;

ユーザがfidelという名前を入力すると、Fidelという名前の生徒が表示されます。

私は何を望んでいますか?

同じ検索ボックスにクラスを入力するユーザーが5人、クラス5のすべての生徒が表示されます。

これは名前で学生を検索する方法です。

public function PostIndex() 
    { 
     $name = Input::get('name'); 

     $validator = validator::make(
      array(
       'name'=>$name 
      ), 

      array(
       'name'=>'required', 
      ) 
     ); 

     if ($validator->fails()) { 
      return back()->withErrors($validator); 
     }else{ 
      $students=DB::table('students')->where('name', $name)->paginate(50); 
     } 

     if (count($students)) { 
      return view('admin.students.index', compact('students')); 
     }else{ 
      Session::flash('fail', 'Sorry, no results found...'); 
      return view('admin.students.index',compact('students'), ['FailMessage' => 'Student by that name not found..'])->withHouse($students); 
     } 
    } 

、データベース内のさまざまなアイテムを検索するために、1つの検索ボックスを使用しての背後にあるロジックは何ですか?

代わりに、様々な異なるクエリの
id | name | adm | class | term | fees | created_at | updated_at 
1  Martin 123  5   1  12  1.1.1   1.1.1 
2  John  345  5   1  12  1.1.1   1.1.1 
+1

あなたは検索が上の仕事をしたい、同じクエリ内のすべての列に複数の場所の条件を使用する必要があることでしょう。 –

+0

クラス5のすべての生徒を検索したいとします。 (私のPostIndex()を参照してください)名前を検証したのでクラスを検証しますか?その後、 - > where( 'class'、$ class)をクエリに追加しますか? – Martin

+0

このようなものは、DB :: table( 'students') - > where( 'name'、$ search_text) - > orWhere( 'class'、$ search_text) - > paginate(50)です。この場合の –

答えて

0

検索ボックスの値を使用して、このような何かを照会することができます:

この

は私のテーブルです

DB::table('students') 
->where('name', $search_text) 
->orWhere('class', $search_text) 
->paginate(50); 

条件はに従ってされる場所の数検索結果を基にする列を選択します。 また、「LIKE」を使用すると、より良い結果をもたらすテキスト列を表示できます。

入力部分の名前を「名前」から「検索」に変更することができます。 2つの異なる入力コントロールは必要ありません。検索ボックスを1つだけ使用し、すべての列に同じ変数を使用します。

あなたの新しいコードはこのような何か、

public function PostIndex() 
    { 
     $search_text = Input::get('search'); 

     $validator = validator::make(
      array(
       'search'=>$search_text 
      ), 

      array(
       'search'=>'required', 
      ) 
     ); 

     if ($validator->fails()) { 
      return back()->withErrors($validator); 
     }else{ 
      $students=DB::table('students')->where('name', $search_text)->orWhere('class', $search_text)->paginate(50); 
     } 

     if (count($students)) { 
      return view('admin.students.index', compact('students')); 
     }else{ 
      Session::flash('fail', 'Sorry, no results found...'); 
      return view('admin.students.index',compact('students'), ['FailMessage' => 'Student by that name not found..'])->withHouse($students); 
     } 
    } 
+0

は、変数$ search_textを$ nameに、2番目の$ search_textを$ classに置き換える必要がありますか? – Martin

+0

いいえ、単一の検索ボックスが必要であると仮定して、両方の条件に同じ変数を使用できます。 –

+0

同じ変数を使用すると、どちらの条件でも$ nameを使用することになりますが、クラス5などの同じクラスの生徒も検索したいと考えています。私のテーブル構造を参照してください。 – Martin

関連する問題