我的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()
时,我会获得值。但我的数据表是空的,如下所示。
我不了解数据表,但快速浏览一下文档,可能的问题是列具有额外的键。尝试删除列对象中的那些
data
键
columns: [
{ "title": "property_id" },
{ "title": "unit_id" },
{ "title": "issue_date" },
{ "title": "expiry_date" },
{ "title": "certified_by" },
{ "title": "safety" },
{ "title": "reminder" }
],