#php #laravel #laravel-8
Вопрос:
Я создаю живой отчет, у меня есть данные в таблицах данных, и мне нужно добавить дополнительные данные, которые не имеют отношения к фактической таблице данных.
Контроллер
$response = json_decode($output,true);
if(!isset($response['error'])){
/**
* Key has access to AA permissions!
*/
if($request->ajax()) {
$data = Attacks::groupBy('attacker_name')
->selectRaw('count(*) as grand_total, attacker_name')
->selectRaw('count(case result when ? then 1 else null end) as hosp',['Hospitalized'])
->selectRaw('count(case result when ? then 1 else null end) as mug',['Mugged'])
->selectRaw('count(case result when ? then 1 else null end) as attack',['Attacked'])
->selectRaw('count(case result when ? then 1 else null end) as arrested',['Arrested'])
->selectRaw('count(case result when ? then 1 else null end) as lost',['Lost'])
->selectRaw('count(case result when ? then 1 else null end) as assist',['Assist'])
->selectRaw('count(case when war > 1 then 1 else null end) as wall')
->selectRaw('ROUND(SUM(respect_gain),2) as respect')
->selectRaw('ROUND(SUM(respect_loss),2) as respectlost')
->where('attacker_faction', 478)
->where('timestamp_ended', '>', $response['chain']['start'])
->orderBy('grand_total', 'DESC')
->get();
//$data['chain'] = $response;
return datatables()
->of($data)
->addIndexColumn()
->toJson();
}
//return view('chain', ['chain' => $response['chain']]);
}
Маршруты
Route::get('chain/list', [AttacksController::class, 'chaining'])->middleware(['auth'])->name('chain.list');
Route::get('chain', function () {
return view('chain');
})->middleware(['auth'])->name('chain');
Лезвие
<div class="mb-2">
<div class="w-full rounded shadow-xs">
<div id='chainInfo' class="p-0 rounded shadow bg-gray-600">
@php
//var_dump($chain);
@endphp
</div>
</div>
</div>
<div class="mb-2">
<div class="w-full rounded shadow-xs">
<div id='recipients' class="p-0 rounded shadow bg-gray-600">
<table class="stripe hover bg-gray-600 text-sm w-full" id="chaining">
<thead>
<tr class="text-xs font-semibold tracking-wide text-left text-white border-b dark:border-gray-700 bg-gray-500 dark:text-gray-400 dark:bg-gray-800">
<th class="px-4 py-3">#</th>
<th class="px-4 py-3">User</th>
<th class="px-4 py-3">Grand Total</th>
<th class="px-4 py-3">Total</th>
<th class="px-4 py-3">Lost</th>
<th class="px-4 py-3">Hosps</th>
<th class="px-4 py-3">Mugs</th>
<th class="px-4 py-3">Arrested</th>
<th class="px-4 py-3">Attacked</th>
<th class="px-4 py-3">Assists</th>
<th class="px-4 py-3">Respect gain</th>
<th class="px-4 py-3">Respect loss</th>
<th class="px-4 py-3">Wall</th>
</tr>
</thead>
<tfoot>
<tr class="text-xs font-semibold tracking-wide text-left text-white border-b dark:border-gray-700 bg-gray-500 dark:text-gray-400 dark:bg-gray-800">
<th colspan="2" style="text-align:right">Total:</th>
<th></th>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
var table = $('#chaining').DataTable({
serverSide: true,
processing: true,
ajax: "{{ route('chain.list') }}",
"order": [[3, 'desc']],
createdRow: function ( row, data, index ) {
$(row).addClass('text-xs')
},
columnDefs: [
{ className: "text-right", targets: "_all" },
],
columns: [
{data: 'DT_RowIndex', name: 'DT_RowIndex'},
{data: 'attacker_name', name: 'attacker name'},
{data: 'grand_total', name: 'gtotal'},
{
data: null, // this will allow usage of full object
render: function ( data, type, full, meta ) {
return (data.hosp data.attack data.mug data.arrested);
},
name: 'total'
},
{data: 'lost', name: 'lost'},
{data: 'hosp', name: 'hosp'},
{data: 'mug', name: 'mug'},
{data: 'arrested', name: 'arrested'},
{data: 'attack', name: 'attacked'},
{data: 'assist', name: 'assists'},
{data: 'respect', name: 'respect'},
{data: 'respectlost', name: 'respect lost'},
{data: 'wall', name: 'wall'},
],
footerCallback: function ( row, data, start, end, display ) {
var api = this.api(), data;
// Remove the formatting to get integer data for summation
var intVal = function ( i ) {
return typeof i === 'string' ?
i.replace(/[$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column( 3 )
.data()
.reduce( function (a, b) {
return intVal(a) intVal(b);
}, 0 );
// Update footer
$( api.column( 2 ).footer() ).html(
total
);
},
paging : false,
lengthMenu: false,
searching: false,
info: false
}).on( 'order.dt search.dt', function () {
table.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
cell.innerHTML = i 1;
} );
} ).columns.adjust();
setInterval(function () {
table.ajax.reload();
console.log('table reloaded')
}, 10000);
});
</script>
Я хочу иметь доступ к $response в моем блейде, а также отправлять данные в таблицы данных! ответ не содержит тех же данных, что и $data!
Ответ №1:
Я думаю, что вы можете использовать функцию создания представления в Laravel и отправлять дополнительную информацию в представление.
Вам необходимо зарегистрировать композитора в поставщике услуг просмотра.для получения дополнительной информации посетите страницу ниже