gpt4 book ai didi

Laravel Datatable 默认搜索不适用于自定义过滤器

转载 作者:行者123 更新时间:2023-12-04 08:29:33 32 4
gpt4 key购买 nike

我在 laravel 中使用 yajra 数据表。我已经实现了该表。除了搜索之外,它工作正常。我也有一个自定义过滤器。
下面的代码显示了数据表初始化和 ajax 请求。用户类型过滤器工作正常。

<script>
$(document).ready(function() {
var table = $('#dataList').DataTable({
processing: true,
serverSide: true,
ajax: {
url: "{{ route('users.user.index') }}",
data: function (d) {
d.user_type = $('#user_type_filter').val();
}
},
columns: [
{data: 'DT_RowIndex', name: 'DT_RowIndex'},
{data: 'name', name: 'name'},
{data: 'email', name: 'email'},
{data: 'phone', name: 'phone'},
{data: 'action', name: 'action', orderable: false, searchable: false},
]
});
$('#search-form').on('submit', function(e) {
table.draw();
e.preventDefault();
});
} );
</script>
用于过滤用户类型的后端索引页
public function index(Request $request)
{
/**
* Ajax call by datatable for listing of the users.
*/
if ($request->ajax()) {
$data = User::with('userType')->get();
$datatable = DataTables::of($data)
->filter(function ($instance) use ($request) {
if ($request->has('user_type') && $request->get('user_type')) {
$instance->collection = $instance->collection->filter(function ($row) use ($request) {
//return Str::contains($row['phone'], $request->get('phone')) ? true : false;
return $row['user_type_id'] == $request->get('user_type');
});
}
if ($request->input('search.value') != "") {
$instance->collection = $instance->collection->filter(function ($row) use ($request) {
return Str::contains($row['name'], $request->input('search.value')) ? true : false;
});
}
})
->addIndexColumn()
->addColumn('action', function ($user) {
return view('users.datatable', compact('user'));
})
->rawColumns(['action'])
->make(true);
return $datatable;
}

$user_type = UserType::pluck('user_type','id')->all();
$users = User::with('userType')->paginate(25);

return view('users.index', compact('users','user_type'));
}
此代码仅在当前页面上生成搜索。

最佳答案

你应该像这样尝试

   filterColumn('name', function($query, $keyword) {
$sql = "name like ?";
$query->whereRaw($sql, ["%{$keyword}%"]);
})
引用这个链接
https://datatables.yajrabox.com/fluent/custom-filter

关于Laravel Datatable 默认搜索不适用于自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65091131/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com