Laravel DataTable: sceberai po data
Intra is programadoris PHP chi intrant innoi nci-nd'at a essi de seguru calincunu chi impreat su framework Laravel comenti a basi po su progetu insoru. E calincunu forsis impreat DataTable po creai a sa lesta una vista po is datus chi benint de una basi de datus. Si no connosceis DataTable, si-ddu cunsillu, ca si fait aorrai unu muntoni de traballu cun HTML e JavaScript, permitendi-sì de impreai su tempus po àtera cosa. Si cunsillu pruschetotu su pachetu yajra/laravel-datatables. Sa cosa stròlica de custa integratzioni primorosa est chi nemus at pensau de permiti de sceberai is datus po data, si esistit in sa basi de datus.
Imaginaus po esempru de tenni una basi de datus cun s'arregistratzioni de is traballadoris de un'asienda, innui ddoi siat fintzas sa data de incomentzu de su contratu. No iat a essi utilosu a sceberai scéti is traballadoris chi ant incumentzau ocannu e megant de acabai cun su perìodu de proa?
No apu a chistionai de sa manera de impreai su pachetu chi apu cunsillau: si seis arribaus finas a custu artìciulu, seu seguru chi teneis giai una tabella chi funtzionat. Asinuncas, no amancant is ghias in s'arretza, e si cunsillu de impreai comenti a basi is documentus e is esemprus chi agatais impari cun su pachetu. Su fundamentu de custas istrutzionis est chi tengais un'estensioni de sa classi DataTable e chi dda siais impreendi po ingendrai is script e su còdixi HTML.
A primu, si serbint duus campus de intrada po ponni su spàtziu de datas bòfiu:
<input type="date" id="date_min" onchange="$('#employees').DataTable().draw(true);">
<input type="date" id="date_max" onchange="$('#employees').DataTable().draw(true);">
Impreendi su tipu date, su navigadori s'at a incurai de amostai unu calendarieddu po sceberai sa data de incumentzu e de acabu chena bisòngiu de impreai librerias esternas.
In sa classi DataTable bosta teneis de seguru su mètodu html, chi bolit cambiau de aici:
public funcion html() {
return $this->builder->setTableId('employees')->minifiedAjax('', '
data.date_min = $("#date_min");
data.date_max = $("#date_max");')
// ... etc
}
Custu at a agiungi a su script finali is istrutzionis po agiungi is duas datas a is filtrus imbiaus a su serbidori po su sceberu de is datus. A custu puntu tocat a cambiai puru sa funtzioni dataTable po fai a manera chi ddas impreit:
public funcion dataTable($query) {
return datatables() ->eloquent($query)
// ... etc
->filter(function ($query) {
if (request('date_min')) {
$query->where('hire_date', '>=', request('date_min'));
}
if (request('date_max')) {
$query->where('hire_date', '<=', request('date_max'));
}
}, true);
}
Fatu. Cun custas pagus mudàntzias teneis una tabella chi fatzat a filtrai fintzas po data e chi sighit funtzionendi cun AJAX e chi duncas est còmoda de impreai, chena depi torrai a carrigai sa pàgina candu cambiais sa data.
Cumenta