我是laravel 5.4的新手,需要创建多属性搜索。
在我搜索之前。
这是我的控制器。
public function search_code(Request $request){
$query = $request->search;
$queryType = $request->institute; // 'id' or 'name'
$items = DB::table('registerdetails');
if($queryType == 'id'){
$items = $items->where('id', 'LIKE',"%$query%");
}
if($queryType == 'full_name'){
$items = $items->where('full_name', 'LIKE',"%$query%");
}
$items = $items->get();
return view('registeredusers.index')->with('items',$items);
}
以下是我的观点。
<form action="search" method="post" class="form-inline">
<select name="institute" id="institute">
<option selected="selected" value="Trainee Id">Trainee Id</option>
<option value="Trainee Name">Trainee Name</option>
<label for="Search">Name</label>
</select>
<input type="text" name="search" /><br>
<input type="hidden" value="{{ csrf_token() }}" name="_token" />
<input type="submit" name="submit" value="Search">
</form>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
<table class="table table-striped">
<thead>
<th>Full Name</th>
<th>Name with initials</th>
<th>National ID Number</th>
<th>Date Of Birth</th>
</thead>
<tbody>
@foreach($items as $item)
<tr>
<td>{{ $item->full_name }}</td>
<td>{{ $item->name_with_initials }}</td>
<td>{{ $item->nic_no }}</td>
<td>{{ $item->date_of_birth }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
在我写的路线中,我虽然问题在路线上是两条路线
Route::group(['middleware' => ['web']], function () {
Route::resource('/userregister', 'UserRegisterController');
});
Route::post('search', 'UserRegisterController@search_code');
有人建议我通过搜索获得结果吗?
答案 0 :(得分:0)
更改选择下拉列表中的值,如下所示
<select name="institute" id="institute">
<option selected="selected" value="id">Trainee Id</option>
<option value="full_name">Trainee Name</option>
<label for="Search">Name</label>
</select>
还有一个建议, 如果只有一个条件是可能的,那么使用&#39;否则如果&#39;如下,
if($queryType == 'id'){
$items = $items->where('id', 'LIKE',"%$query%");
}
else if($queryType == 'full_name'){
$items = $items->where('full_name', 'LIKE',"%$query%");
}