我正在尝试对像这样的表进行查询
tbl_bottle
name | type | location
bot1 A USA
bot2 B
bot3 C USA
bot4 A UK
bot5 A UK
所以当我加载前端时它将显示
name | type | location
bot1 A USA
bot1 B
bot3 C USA
bot4 A UK
bot5 A UK
但是当我在搜索中输入bot1
时,它应该给我:
name | type | location
bot1 A USA
bot1 B
但是我得到的是
name | type | location
bot1 A USA
bot1 B
bot3 C USA
这就是我的控制器中的
$bottle= tbl_bottle::select(
'name',
'type',
'location'
)->where('location','=','USA')->OrWhere('location','=',' ');
return DataTables::of($bottle)
->addColumn('action', function ($bottle) {
return '<a href="#" class="btn btn-xs btn-primary got=to" id="' . $members->name. '">View Details</a>';
})->make(true);
所以数据表可以正确显示此内容,但是当我尝试搜索时却无法正常工作 我的意思是我搜索时
所以在我的前端,我只有
<table id="tbl_bottles" class="table">
<th>Name</th>
<th>Type</th>
<th>Location</th>
<th>Action</th>
</table>
<script type="text/javascript">
$(document).ready(function () {
$('#tbl_bottles').DataTable({
"processing": true,
"serverSide": true,
"ajax": "{{ route('ajax.getBottles') }}",
"columns": [
{ "data": 'name'},
{"data": "type"},
{"data": "location"},
{"data":"action",orderable:false,searchable:false}
],
});
});
</script>
搜索输入被数据表插入 我使用的文档是https://github.com/yajra/laravel-datatables
答案 0 :(得分:0)
如果要按瓶名进行搜索,则首先必须将搜索key word
(瓶名)与请求一起发送,以便可以在“方法”中进行搜索。
在您的key word
中发送搜索view
:
<form>
<input type="text" name="key_word" />
<button type="submit">Submit</button>
</form>
在您的controller
中,获取key word
获取关键字并将其分配给变量,然后在查询瓶子时,将变量添加到where clause
中,如下所示:
public function getBottles(Request $request){
$keyWord = $request->key_word; // get the key word and assign it to a variable
$bottle= tbl_bottle::select(
'name',
'type',
'location'
)->where('name','=', $keyWord)->
return DataTables::of($bottle)
->addColumn('action', function ($bottle) {
return '<a href="#" class="btn btn-xs btn-primary got=to" id="' . $members->name. '">View Details</a>';
})->make(true);
}
在直接进行
user input
处理之前,您必须先进行验证,但是这些事情不在此问题范围之内。我的答案仅针对您的要求。
答案 1 :(得分:0)
所以这对我有用
$bottle= tbl_bottle::select(
'name',
'type',
'location'
)->where(function($query) {
$query->where('location','=','USA')->OrWhere('location','=',' ')
});
return DataTables::of($bottle)->make(true);
答案 2 :(得分:0)
使用此代码(用于原始查询)
$searchValue = $request->input('search')['value']; // Search value from datatable
//-- END DEFAULT DATATABLE QUERY PARAMETER
//-- START DYNAMIC QUERY BINDING
$conditions = '1 = 1';
if (!empty($searchValue)) {
$conditions .= " AND name LIKE '%" . trim($searchValue) . "%'";
}
//-- END DYNAMIC QUERY BINDING
//-- WE MUST HAVE COUNT ALL RECORDS WITHOUT ANY FILTERS
$countAll = \App\tbl_bottle::count();
//-- CREATE DEFAULT LARAVEL PAGING
$paginate = \App\tbl_bottle::select('*')
->whereRaw($conditions)
->paginate($limit, ["*"], 'page', $page);
或者您可以查看我的博客文章Laravel datatables了解更多详细信息。它也提供排序和搜索。