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

时间:2017-09-17 15:48:26

标签: mysql laravel-5.3

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

我想使用相同的搜索框来显示同一班级的所有学生。例如;

我有什么;

当用户输入名称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);
        }
    }

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

这是我的表:

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 :(得分:0)

您可以使用搜索框值代替各种不同的查询,并查询以下内容:

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

根据您希望搜索结果所基于的列,条件的位置数。 你也可以使用' LIKE'对于文本列,它将为您提供更好的结果。

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

您的新代码将是这样的,

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