【发布时间】:2021-05-06 13:04:45
【问题描述】:
我被困了 2 天,我很困惑如何使用 yajra/laravel-datatable 渲染列
我使用postgre 作为数据库,yajra/laravel-datatables 作为包。
我有这样的查询生成器
$data = DB::select("SELECT * FROM get_list_count_amount_transaction('chat', 'done', '2019-03-01', '2021-12-31' )")[0];
生成对象的值:(我使用var_dump() 来查看值)
{ ["list_data"]=> string(2171)
"[{"id":"44649ccd-9195-4964-b48c-ed2098077dc5","kd_join":1,"status":"done","booking_date":"2021-04-18","transaction_type":"chat","price":4000.00,"date_create":"2021-04-18T19:56:57"},
{"id":"e500d2c1-99ae-4436-8ecc-8073f4f05bba","kd_join":1,"status":"done","booking_date":"2021-03-20","transaction_type":"chat","price":10000.00,"date_create":"2021-03-19T21:41:41"}
]"
["count_transaction"]=> int(12)
["total_amount_transaction"]=> string(9) "160500.00"
}
我很困惑,如何使用 datatble 将list_data 渲染到表格中
这是我的 html 构建器函数:
public function html()
{
return $this->builder()
->columns($this->getColumns())
->minifiedAjax()
->addAction(['width' => '200px'])
->addColumnBefore([
'defaultContent' => '',
'data' => 'DT_Row_Index',
'name' => 'DT_Row_Index',
'title' => 'No',
'render' => function () {
return 'function(data,type,fullData,meta){return meta.settings._iDisplayStart+meta.row+1;}';
},
'orderable' => false,
'searchable' => false,
'exportable' => false,
'printable' => true,
'footer' => '',
]);
}
protected function getColumns()
{
return [
['data' => 'transaction_type', 'name' => 'transaction_type', 'title' => 'Tipe Transaksi', 'orderable' => false],
['data' => 'status', 'name' => 'status', 'title' => 'Status', 'orderable' => false],
['data' => 'booking_date', 'name' => 'booking_date', 'title' => 'Tanggal Booking', 'orderable' => false],
['data' => 'price', 'name' => 'price', 'title' => 'Jumlah', 'orderable' => false],
];
}
}
【问题讨论】:
-
您不需要使用 html 构建器。 datatables.yajrabox.com/collection/basic
-
但是如何只渲染
list_data上的值? -
还是有错误:(
-
您提供的 var_dump 结果显示
list_data包含一个字符串。您的数据似乎保存为 JSON。要使用它,您可以使用json_decode:$listDataArray = json_decode($data["list_data"]); -
我已经这样做了,但我的控制台中仍然出现内部服务器错误