使用一个搜索框搜索数据库中的不同项目

Use one search box to search for different items in the database

我有一个搜索框,可以从数据库中搜索学生姓名。

我想使用同一个搜索框来显示同一个 class 中的所有学生。例如;

我有什么;

当用户输入姓名 say,fidel 时,会显示姓名为 Fidel 的学生。

我想要的;

一个用户在同一个搜索框中输入class say, 5, 将显示class 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);
        }
    }

使用一个搜索框来搜索数据库中的各种项目背后的逻辑是什么?

这是我的 table:

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

除了各种不同的查询,您还可以使用搜索框值并进行如下查询:

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

where 条件的数量将根据您希望搜索结果所基于的列而定。 您也可以将 'LIKE' 用于文本列,这会给您带来更好的结果。

对于验证部分,您可以将输入从 'name' 重命名为 'search'。您不需要两个不同的输入控件。只有一个搜索框,所有列都使用相同的变量。

你的新代码应该是这样的,

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