Laravel 中未填充数据表

问题描述 投票:0回答:1

我的JavaScript代码如下。

$(document).ready(function() {
    $('#time').change(function() {
        var time = $(this).val(); 
        var url = '{{ route("owner.safety.timeOverview", ":time") }}';
        url = url.replace(':time', time);

        $.ajax({
            type: 'GET',
            url: url,
            success: function(data) {

                console.log(data); // I am getting values here

                $('#overview').DataTable({
                    destroy: true, 
                    data: data, 
                    lengthMenu: [10, 25, 50, 75, 100],
                    mimeType: 'json',
                    columns: [
                        { "data": "property_id", "title": "property_id" },
                        { "data": "unit_id", "title": "unit_id" },
                        { "data": "issue_date", "title": "issue_date" },
                        { "data": "expiry_date", "title": "expiry_date" },
                        { "data": "certified_by", "title": "certified_by" },
                        { "data": "safety", "title": "safety" },
                        { "data": "reminder", "title": "reminder" }
                    ],
                    searchPane: {
                        threshold: 0
                    },
                    drawCallback: function() {
                        $(".dataTables_length select").addClass("form-select form-select-sm");
                    },
                    language: {
                        paginate: {
                            previous: '<span class="iconify" data-icon="icons8:angle-left"></span>',
                            next: '<span class="iconify" data-icon="icons8:angle-right"></span>'
                        }
                    }
                });
            }
        });
    });
});

我的PHP代码如下。

public function getAllTime($time)
{
    if ($time == 'oneweek') {
        $difference = Carbon::now()->endOfWeek()->addWeek();
    }
    if ($time == 'onemonth') {
        $difference = Carbon::now()->addMonth()->endOfMonth();
    }
    if ($time == 'threemonth') {
        $difference = Carbon::now()->addMonths(3)->endOfMonth();
    }
    if ($time == 'sixmonth') {
        $difference = Carbon::now()->addMonths(6)->endOfMonth();
    }

    $propertyIds = Property::where('owner_user_id', auth()->id())->pluck('id')->toArray();

    $data = Safety::with(['property', 'propertyUnit'])
        ->whereIn('property_id', $propertyIds)
        ->whereBetween('expiry_date', [Carbon::now(), $difference])
        ->orderBy('id', 'DESC')
        ->get();

    return $data;
}


public function getAllDataTime($time)
{
    $overviews = $this->getAllTime($time);

    return datatables($overviews)
        ->addIndexColumn()
        ->addColumn('property_id', function ($overview) {
            return  $overview->property ? $overview->property->name : '';
        })
        ->addColumn('unit_id', function ($overview) {
            return  $overview->propertyUnit ? $overview->propertyUnit->unit_name : '';
        })
        ->addColumn('issue_date', function ($overview) {
            return  date("d-m-Y", strtotime($overview->issue_date));
        })
        ->addColumn('expiry_date', function ($overview) {
            return  date("d-m-Y", strtotime($overview->expiry_date));
        })
        ->addColumn('certified_by', function ($overview) {
            return  $overview->certified_by;
        })
        ->addColumn('safety', function ($overview) {
            return  ucfirst($overview->type);
        })
        ->addColumn('reminder', function ($overview) {
            if ($overview->expired == 1) {
                return '<div>Expired</div>';
            } else {
                $expiryDate = Carbon::parse($overview->expiry_date);
                $today = Carbon::now();
                $differenceInDays = $today->diffInDays($expiryDate);

                if ($expiryDate->isPast()) {
                    return '<div class = "over_due">Over Due</div>';
                } else {
                    $differenceInDays = $today->diffInDays($expiryDate);
                    if ($differenceInDays < 30) {
                        return '<div class = "due_soon">Due Soon</div>';
                    } else {
                        return '<div class = "not_due">Not Due</div>';
                    }
                }
            }
        })
        ->rawColumns(['reminder'])
        ->make(true);
}

当我使用

console.log()
时,我会获得值。但我的数据表是空的,如下所示。

enter image description here

javascript jquery laravel datatables
1个回答
0
投票

我不了解数据表,但快速浏览一下文档,可能的问题是列具有额外的键。尝试删除列对象中的那些

data

columns: [
    { "title": "property_id" },
    { "title": "unit_id" },
    { "title": "issue_date" },
    { "title": "expiry_date" },
    { "title": "certified_by" },
    { "title": "safety" },
    { "title": "reminder" }
],

来源:Datatables api

© www.soinside.com 2019 - 2024. All rights reserved.