使用一个搜索框搜索数据库中的不同项目
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);
}
}
我有一个搜索框,可以从数据库中搜索学生姓名。
我想使用同一个搜索框来显示同一个 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);
}
}