Anonymous
Таблица данных не заполняется в Laravel
Сообщение
Anonymous » 23 май 2024, 11:39
Мой код 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: '',
next: ''
}
}
});
}
});
});
});
Мой 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 'Expired';
} else {
$expiryDate = Carbon::parse($overview->expiry_date);
$today = Carbon::now();
$differenceInDays = $today->diffInDays($expiryDate);
if ($expiryDate->isPast()) {
return 'Over Due';
} else {
$differenceInDays = $today->diffInDays($expiryDate);
if ($differenceInDays < 30) {
return 'Due Soon';
} else {
return 'Not Due';
}
}
}
})
->rawColumns(['reminder'])
->make(true);
}
Я получаю значения, когда использую console.log(). Но моя таблица данных пуста, как показано ниже.
Подробнее здесь:
https://stackoverflow.com/questions/785 ... in-laravel
1716453568
Anonymous
Мой код JavaScript выглядит следующим образом. [code]$(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: '', next: '' } } }); } }); }); }); [/code] Мой PHP-код выглядит следующим образом. [code]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 'Expired'; } else { $expiryDate = Carbon::parse($overview->expiry_date); $today = Carbon::now(); $differenceInDays = $today->diffInDays($expiryDate); if ($expiryDate->isPast()) { return 'Over Due'; } else { $differenceInDays = $today->diffInDays($expiryDate); if ($differenceInDays < 30) { return 'Due Soon'; } else { return 'Not Due'; } } } }) ->rawColumns(['reminder']) ->make(true); } [/code] Я получаю значения, когда использую console.log(). Но моя таблица данных пуста, как показано ниже. [img]https://i.sstatic.net/XIf2Tptc.png[/img] Подробнее здесь: [url]https://stackoverflow.com/questions/78521869/datatable-is-not-populating-in-laravel[/url]