mgsmus
Kod okuma ve sorun çözme konusunda yeteneğinize hayranım 🙂
Bir miktar değişiklik yaparak bu bölümü bitirmiş oldum.
Bu kodu bir JS DataTables - Ajax örneğinden alarak değiştirmiştim.
Dolayısı ile camelCase / snake_case karmaşası ondan idi.
Tüm ortamlarda snake_case kullandığım için, Laravel'e geçince camelCase'e alışmak zor ancak amacım camelCase.
Ama yine de DB tarafında snake_case'e devam etmek zorundayım sanırım.
Netice itibarıyla kod şu şekilde biraz daha insan içine çıkar hale geldi 🙂
Yeniden teşekkürler.
public function getInvoices_dt(Request $request)
{
$draw = $request->get('draw');
$start = $request->get("start");
$rowPerPage = $request->get("length");
$arrColumnIndex = $request->get('order');
$arrColumnName = $request->get('columns');
$arrOrder = $request->get('order');
$arrSearch = $request->get('search');
$columnIndex = $arrColumnIndex[0]['column'];
$columnName = $arrColumnName[$columnIndex]['data'];
$columnSortOrder = $arrOrder[0]['dir'];
$searchValue = $arrSearch['value'];
$columnName = in_array($columnName, ['customerName', 'description', 'issue_date', 'due_date'])
? $columnName
: 'description';
$columnSortOrder = in_array($columnSortOrder, ['asc', 'desc'])
? $columnSortOrder
: 'asc';
$totalRecords = Invoice::count();
$records = Invoice::with([
'customer',
'lines'
])
->whereHas('customer', function (Builder $query) use ($searchValue) {
$query->where('customer_name', 'like', "%{$searchValue}%");
})
->orderBy($columnName, $columnSortOrder)
->skip($start)
->take($rowPerPage)
->get();
$totalRecordswithFilter = Invoice::with([
'customer',
'lines'
])
->whereHas('customer', function (Builder $query) use ($searchValue) {
$query->where('customer_name', 'like', "%{$searchValue}%");
})->count();
$arrData = array();
$sNo = $start + 1;
foreach ($records as $record) {
$id = $record->id;
$description = $record->description;
$issueDate = $record->issue_date;
$dueDate = $record->due_date;
$invoiceTotal= $random = mt_rand(10000, 99999);
$arrData[] = array(
"id" => $id,
"description" => $description,
"issue_date" => $issueDate,
"due_date" => $dueDate,
"invoiceTotal" => $invoiceTotal
);
}
$response = array(
"draw" => intval($draw),
"iTotalRecords" => $totalRecords,
"iTotalDisplayRecords" => $totalRecordswithFilter,
"aaData" => $arrData
);
echo json_encode($response);
exit;
}