本文详解如何在 laravel 中将数据库查询结果(eloquent 或 query builder 集合)动态渲染到 adminlte 的 datatables 表格中,避免硬编码静态数据,实现可维护、响应式的后台列表展示。
在使用 Laravel-AdminLTE 构建管理后台时,常需将数据库查询结果以表格形式展示。官方文档中 DataTables 组件示例使用的是静态数组(如 ['data' => [[1, 'John', '...'], ...]]),但实际开发中,我们更需要动态注入模型集合——尤其是当数据来自 DB::table() 或 Eloquent 查询时。
首先优化控制器逻辑,避免冗余变量赋值,并确保传递的数据结构清晰:
// app/Http/Controllers/CategorieDocumentiController.php
public function index()
{
$categoriePdf = DB::table('categorie_documenti')
->select('id', 'descrizione as name', 'per_veicolo') // 别名适配视图字段
->get();
return view('elenca_categoria_pdf', compact('categoriePdf'));
}⚠️ 注意:原问题中 descrizione 字段在视图里被误用为 name,因此建议在 SELECT 中显式使用 AS name 别名,或在 Blade 中统一用 $categoriePdfs->descrizione —— 本教程采用别名方式提升语义一致性。
AdminLTE 的 DataTables 支持两种集成方式:
这里采用客户端渲染(更贴合原需求),无需修改 JS 配置,只需在 Blade 中生成
数据行,并启用 AdminLTE 自带的 DataTables 初始化脚本(默认已包含)。{{-- resources/views/elenca_categoria_pdf.blade.php --}}
@extends('adminlte::page')
@section('title', 'Categorie Documenti')
@section('content_header')
Elenco Categorie PDF
@stop
@section('content')
| ID | {{ __('Nome Categoria') }} | {{ __('Per Veicolo') }} | {{ __('Azioni') }} |
|---|---|---|---|
| {{ $item->id }} | {{ $item->name }} | {{ $item->per_veicolo ? '✅ Sì' : '❌ No' }} |
|
你无需将 Laravel 集合“转成” $config['data'] 的二维数组来适配 AdminLTE —— 直接在 Blade 中遍历集合生成