You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8中Yajra-Datatables数据不显示问题求助

解决Laravel 8 Yajra Datatables数据无法显示的问题

以下是针对你代码的排查和修复方案:

1. 修正Table ID错误

视图中表格的id属性包含空格,导致jQuery选择器无法定位元素:

<!-- 错误写法 -->
<table id="datatable yajra-datatable" ...>

<!-- 正确写法 -->
<table id="yajra-datatable" class="table table-striped table-no-bordered table-hover" cellspacing="0" width="100%" style="width:100%">

2. 调整ServerSide模式下的数据查询逻辑

ServerSide模式需要Yajra Datatables处理分页、排序、搜索,不能直接用Voucher::all()一次性取出所有数据,改用查询构建器:

public function index(Request $request) {
    if ($request->ajax()) {
        $data = Voucher::query(); // 替换Voucher::all()
        return DataTables::of($data)
            ->addIndexColumn()
            ->addColumn('action', function($row){
                $actionBtn = '<a href="javascript:void(0)" class="edit btn btn-success btn-sm">Edit</a> <a href="javascript:void(0)" class="delete btn btn-danger btn-sm">Delete</a>';
                return $actionBtn;
            })
            ->rawColumns(['action'])
            ->make(true);
    }
    return view('backend.menu.settings.voucher.list');
}

3. 验证路由配置

确保web.php中正确定义了voucher.index路由:

Route::get('/vouchers', [\App\Http\Controllers\VoucherController::class, 'index'])->name('voucher.index');

4. 检查模型字段与前端配置匹配

确认Voucher模型的数据库字段code、type、value、start、expired存在且拼写正确。如果start/expired是日期字段,可在Datatables中格式化:

// 在控制器的DataTables链式调用中添加
->addColumn('start', function($row){
    return $row->start->format('Y-m-d'); // 按需调整日期格式
})
->addColumn('expired', function($row){
    return $row->expired->format('Y-m-d');
})

同时确保模型中已将这些字段设置为日期类型:

// Voucher模型中
protected $casts = [
    'start' => 'datetime',
    'expired' => 'datetime',
];

5. 确认前端依赖加载完整

确保视图中加载了jQuery和Yajra Datatables的CSS/JS:

<!-- 加载顺序:先jQuery,再Datatables -->
<script src="{{ asset('js/jquery.min.js') }}"></script>
<link rel="stylesheet" href="{{ asset('vendor/datatables/css/dataTables.bootstrap4.min.css') }}">
<script src="{{ asset('vendor/datatables/js/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('vendor/datatables/js/dataTables.bootstrap4.min.js') }}"></script>

6. 调试AJAX请求

打开浏览器开发者工具(F12)→ Network标签,查看voucher.index的AJAX请求:

  • 检查请求状态码是否为200
  • 查看响应数据的data数组是否包含正确字段
  • 若有错误,根据响应中的错误信息定位问题(如SQL语法错误、字段不存在等)

内容的提问来源于stack exchange,提问作者Myu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:25:35