我有一个搜索框,可以从数据库中搜索学生姓名。
我想使用相同的搜索框来显示同一班级的所有学生。例如;
我有什么;
当用户输入名称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
答案 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);
}
}