Yajra 数据表 Laravel
Yajra Datatables Laravel
我在 Laravel 应用程序中使用 Yajra Datatable 时遇到问题。
我按照在线指南进行操作,但得到的是空白回复。
我需要根据积分显示会员列表。
这是查看页面中的Table:
<div class="table-responsive">
<table class="table table-striped table-no-boreded table-hover" id="points-table">
<thead class = "text-primary">
<h4> </h4>
<tr>
<th class="text-center">Postion</th>
<th class="text-center">Member</th>
<th class="text-center">Total Points</th>
<th width="10%"></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
这是同一视图页面上的脚本
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
<script src="https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap4.min.js"></script>
<script type = "text/javascript">
$(function() {
var table=$('.points').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('getPoints') }}',
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex' },
{ data: 'member_id', name: 'member' },
{ data: 'total_points', name: 'Total Points' },
{ data: 'action', name: 'action', orderable: true, searchable: true },
]
});
})
</script>
这是控制器
public function getPoints(Request $request)
{
$year = Carbon::parse(Carbon::now())->year;
if ($request->ajax()) {
$points = Points::query()
->select('member_id')->selectRaw('SUM(value) as TotalPoints')
->where('Year','=', $year)
->groupBy('member_id')
->orderByDesc('Totalpoints')
->get();
return Datatables::of($points)
->addIndexColumn();
}
}
我在路由中添加了get
Route::get('get/points', 'PointsController@getPoints')->middleware('auth')->name('getPoints');
我知道我的查询有效,因为当我有一个正常的数据时,这个查询工作正常。
但是在上面列出的代码下,我没有得到响应。
我的积分中有 1 条记录table,因此我应该在数据table 下看到一些东西table。
如果能帮我指明正确的方向,那就太好了
您在 javascript 代码中传递了错误的 class。
而不是 $('.points')
class 你需要输入 $('#points-table')
var table=$('#points-table').DataTable({
// your code
})
将代码放入您的控制器中,例如
return DataTables::of($points)
->addIndexColumn()
->make(true);
我在 Laravel 应用程序中使用 Yajra Datatable 时遇到问题。
我按照在线指南进行操作,但得到的是空白回复。 我需要根据积分显示会员列表。
这是查看页面中的Table:
<div class="table-responsive">
<table class="table table-striped table-no-boreded table-hover" id="points-table">
<thead class = "text-primary">
<h4> </h4>
<tr>
<th class="text-center">Postion</th>
<th class="text-center">Member</th>
<th class="text-center">Total Points</th>
<th width="10%"></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
这是同一视图页面上的脚本
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
<script src="https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap4.min.js"></script>
<script type = "text/javascript">
$(function() {
var table=$('.points').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('getPoints') }}',
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex' },
{ data: 'member_id', name: 'member' },
{ data: 'total_points', name: 'Total Points' },
{ data: 'action', name: 'action', orderable: true, searchable: true },
]
});
})
</script>
这是控制器
public function getPoints(Request $request)
{
$year = Carbon::parse(Carbon::now())->year;
if ($request->ajax()) {
$points = Points::query()
->select('member_id')->selectRaw('SUM(value) as TotalPoints')
->where('Year','=', $year)
->groupBy('member_id')
->orderByDesc('Totalpoints')
->get();
return Datatables::of($points)
->addIndexColumn();
}
}
我在路由中添加了get
Route::get('get/points', 'PointsController@getPoints')->middleware('auth')->name('getPoints');
我知道我的查询有效,因为当我有一个正常的数据时,这个查询工作正常。 但是在上面列出的代码下,我没有得到响应。
我的积分中有 1 条记录table,因此我应该在数据table 下看到一些东西table。
如果能帮我指明正确的方向,那就太好了
您在 javascript 代码中传递了错误的 class。
而不是 $('.points')
class 你需要输入 $('#points-table')
var table=$('#points-table').DataTable({
// your code
})
将代码放入您的控制器中,例如
return DataTables::of($points)
->addIndexColumn()
->make(true);