php - Laravel DataTables 下拉过滤器不起作用
问题描述
我正在尝试在 Yajra Laravel DataTables 中创建 DataTables 下拉过滤器,但出现错误:
这是我的控制器:
public function index(Request $request)
{
$title="Data Pelamar Kerja";
if (request()->ajax()){
$query = Applicant::with('formation')->get();
// $query = Applicant::all('formation')->where('status','active')->get();
return DataTables::of($query)
->addColumn('action', function($item){
return
'
<div class="btn-group">
<a href="#!" data-toggle="tooltip" data-id="'.$item->id.'" class="btn btn-sm btn-danger delete-data">Hapus</a>
</div>
';
})
->editColumn('status', function ($item){
if ($item->status == 'quo'){
return '<span class="badge-text badge-text-small info"><ion-icon name="checkmark-circle"></ion-icon> '.$item->status.'</span>';
}else{
return '<span class="badge-text badge-text-small success"><ion-icon name="close-circle"></ion-icon>'.$item->status.'</span>';
}
})
->editColumn('formations_id', function ($item){
if ($item->formations_id == 0 || $item->formations_id == NULL){
return '<span class="text-danger">-</span>';
}else{
return $item->formation->name;
}
})
->filter(function ($instance) use ($request) {
if ($request->get('status') == 'quo' || $request->get('status') == 'melamar') {
$instance->where('status', $request->get('status'));
}
if (!empty($request->get('search'))) {
$instance->where(function($w) use($request){
$search = $request->get('search');
$w->orWhere('name', 'LIKE', "%$search%")
->orWhere('email', 'LIKE', "%$search%");
});
}
})
->addIndexColumn()
->removeColumn('id')
->rawColumns(['action','status','formations_id'])
->make(true);
}
return view('pages.admin.applicant.index',['title'=>$title]);
}
这是我的 js 函数:
var datatable = $('#appTable').DataTable({
processing:true,
serverSide:true,
ordering:true,
ajax:{
url:'{!! url()->current() !!}',
data: function (d) {
d.status = $('#status').val(),
d.search = $('input[type="search"]').val()
}
},
columns:[
{data: 'DT_RowIndex', name:'DT_RowIndex'},
{data:'name', name:'name'},
{data:'gender', name:'gender'},
{data:'email', name:'email'},
{data:'status', name:'status'},
{data:'formations_id', name:'formations_id'},
{
data:'action',
name:'action',
orderable:false,
searcable:false,
width:'15%'
},
],
order:[
[0,'asc']
]
});
$('#status').change(function(){
datatable.draw();
});
这是我的下拉表单:
<div class="form-group">
<label><strong>Status :</strong></label>
<select id='status' class="form-control" style="width: 200px">
<option value="">Filter Status</option>
<option value="quo">Quo</option>
<option value="melamar">Melamar</option>
</select>
</div>
我对我的代码有什么问题感到困惑。我尝试了互联网上的各种教程,但它不起作用。
解决方案
数据表需要在后续的方法链中使用builder实例。尝试以下删除get()
$query = Applicant::all('formation')->where('status','active')->latest();
推荐阅读
- python - 无法使用 plotly 进行 3D 绘图。收到错误“无法从'plotly.io._utils'导入名称'plotly_cdn_url'”
- javascript - 如何将状态 base64 字符串设置为 React 中的图像?
- python - 如何将 Jupyter 笔记本转移到 exe
- jquery - 如何在 Promise 中适当地包装来自 jquery load() 的回调函数,以便我可以使用 await Promise.all?
- javascript - 如何使用 javascript 设置 css 顶部样式
- ios - 从 TabView 中的 NavigationLink 弹出会导致 tvOS 应用程序崩溃
- python - 如何检索在 Strava API 身份验证中生成的代码?
- django - ['“<BoundField value=14.99 errors=None>” value 必须是十进制数。']
- c++ - 两种不同的合并排序方式的比较
- reactjs - 反应 - 将数据传递给子组件返回:无法读取未定义的属性