【问题标题】:Laravel Datatable addColumn returns ID of one record onlyLaravel Datatable addColumn 仅返回一条记录的 ID
【发布时间】:2019-06-25 11:57:51
【问题描述】:

我正在尝试使用 Yajra Datatable 将 DataTable 集成到我的网站中。我能够渲染表格,但遇到了问题。在我放置删除选项的 addColumn 字段中,id 仅返回单个记录,而不是每列的特定 ID。

这是我的控制器代码

public function fetchData($manifest_no){
            $hwb_data = DB::table('hwb')
                ->join('manifest_records', 'hwb.id', '=', 'manifest_records.hwb_id')
                ->join('consignees', 'consignees.id', '=', 'hwb.client_id')
                ->where('manifest_records.manifest_no', $manifest_no)
                ->get();

        return Datatables::of($hwb_data)
            ->addIndexColumn()
            ->addColumn('action', function($row){
               $idx = $row->id;
                $btn = "<a href='javascript:void(0)' id='delete' data-id='$idx' class='edit btn btn-danger btn-sm'>$idx</a>";
                return $btn;
            })
            ->rawColumns(['action'])
            ->make(true);
    }

这是数据表的渲染

$(function () {
        let table = $('#tableSample').DataTable({
            processing: true,
            serverSide: true,
            ajax: "{{ url("/fetchData/$manifest_no") }}",
            columns: [
                {data: 'id', name: 'id', 'visible': false},
                {data: 'created_at', name: 'created_at'},
                {data: 'hwb_no', name: 'hwb_no'},
                {data: 's_name', name: 's_name'},
                {data: 'c_name', name: 'c_name'},
                {data: 'destination', name: 'destination'},
                {data: 'dr_no', name: 'dr_no'},
                {data: 'commodity', name: 'commodity'},
                {data: 'actual_weight', name: 'actual_weight'},
                {data: 'tp_cbm', name: 'tp_cbm'},
                {data: 'action', name: 'action', orderable: false, searchable: false},
            ]
        });

        $("#tableReload").delegate('#delete', 'click', function (e) {
            e.preventDefault();
            let id = $(this).data('id');
            console.log(id);
        })
    });

I 每当我渲染数据时,我总是会遇到这个问题。操作按钮的值始终为 2

【问题讨论】:

    标签: laravel yajra-datatable


    【解决方案1】:

    我猜你必须像这样使用渲染函数,而不是后端函数

    还可以在渲染视图之前尝试转储 $row 和 dd,以检查 $row 是否具有您期望的正确值!

    $(function () {
                let table = $('#tableSample').DataTable({
                    processing: true,
                    serverSide: true,
                    ajax: "{{ url("/fetchData/$manifest_no") }}",
                    columns: [
                        {data: 'id', name: 'id', 'visible': false},
                        {data: 'created_at', name: 'created_at'},
                        {data: 'hwb_no', name: 'hwb_no'},
                        {data: 's_name', name: 's_name'},
                        {data: 'c_name', name: 'c_name'},
                        {data: 'destination', name: 'destination'},
                        {data: 'dr_no', name: 'dr_no'},
                        {data: 'commodity', name: 'commodity'},
                        {data: 'actual_weight', name: 'actual_weight'},
                        {data: 'tp_cbm', name: 'tp_cbm'},
    
                        {   data: 'id', 
                            name: 'action',
                            orderable: false,
                            searchable: false,
                            "render": function ( data, type, row, meta ) { 
                                return '<button class="delete btn btn-danger" data-id="'+ data +'"> Delete  </button>'
                            }},
                    ]
                });
    
            });
    

    【讨论】:

    • 我试过了,但是当我控制台记录数据时它仍然显示我 2?
    • 尝试 console.log(row)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 2013-03-28
    • 2017-08-30
    • 1970-01-01
    • 2022-01-27
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多