希望有人能帮助我。
我使用的是yajra数据表,我想在一列中进行搜索,但这一列有这样的html代码:
->editColumn('last_connection', function($user){
$data = $user->last_connection < Carbon::now()->subDays(7) ? '<label class="badge badge-warning mr-2">Iddle</label>' : "";
return $data . $user->last_connection;
})
此代码验证用户最后一次连接是否在7天前,并添加一个指示这一点的标签。
所以,当我在数据表中搜索时,我想键入";iddle";或者月份,应该搜索,但没有。
这是我的自定义过滤器:
->filterColumn('name', function($query, $keyword) {
$query->whereRaw('CONCAT(fname, " ", mname, " ", lname) like ?', ["%{$keyword}%"]);
})
因为您编辑列并用一些html修改它,所以不能使用内置搜索框来检索数据,您应该使用和其他input/select标签,使用jQuery datatable提供的searchapi方法来搜索该列,它的样品给你:
var table = $('#your_table').DataTable({
processing: true,
serverSide: true,
columns: [
{
data: 'name',
name: 'name',
},
{
data: 'last_connection',
name: 'last_connection',
searchable: false
}
]});
对于您的输入,您可以使用key-up事件来触发对数据表中特定列的搜索,如
$('#search_last_connection').on('keyup', function() {
table
.columns(1)
.search(this.value)
.draw();
});
或更改选择标签的事件,如下所示:
$('#search_last_connection').on('change', function() {
table
.columns(1)
.search($("#search_last_connection option:selected").text())
.draw();
});
有关更多信息,您可以使用jQuery数据表搜索API 的文档
如果它能帮助一些人,我就是这样让它工作的:
- 必须在查询中添加addSelect(在我的情况下,也是西班牙语翻译(:
DB::statement("SET lc_time_names = 'es_CO';");
$users = User::query()
->select('users.*')
->addSelect(DB::raw("DATE_FORMAT(last_connection,'%W %d %M %Y - %r') as last_connection2"));
然后自定义过滤器Column:
->filterColumn('last_connection2', function ($query, $keyword){
DB::statement("SET lc_time_names = 'es_CO';");
$query->whereRaw("DATE_FORMAT(last_connection,'%W %d %M %Y - %r') like ?", ["%$keyword%"]);
})