【问题标题】:how to render columns in laravel datatable?如何在 laravel 数据表中呈现列?
【发布时间】: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"]);
  • 我已经这样做了,但我的控制台中仍然出现内部服务器错误

标签: php laravel datatable


【解决方案1】:

只需获取 list_data,使用 json_decode 和 laravel 集合来制作您需要的结构。尝试使用mapfiltermapWithKeys 或任何合适的。 例如:

collect(json_decode($listData))->mapWithKeys(function($item)){

      //
} 

【讨论】:

    猜你喜欢
    • 2013-10-09
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2019-09-22
    • 1970-01-01
    • 2015-05-02
    相关资源
    最近更新 更多