Gelen request de id değerini $request->id şeklinde kullanıyorsunuz. Öncelikle bir validation yazarak burada id değerinin gelmesini koşul olarak eklemenizi tavsiye ederim. Bununla ilgili kaynak burada var = https://laravel.com/docs/7.x/validation#creating-form-requests
Gelen id değerini aboneler tablosundan alıp getirirken first ile alıyorsunuz. Eğer aboneler arasında böyle bir kayıt yoksa ne olacağı belirsiz. Üstte belirtiğim validation alanında gelen id değerini users aboneler tablosunda olması gerektiği koşulunu koyabilirsiniz veya public function TrafikRaporlariDetayGetir(Aboneler $abone) şeklinde kullanabilirsiniz. En kötü ihtimalle aşağıdaki örnekte yazdığım gibi findOrFail kullanabilirsiniz.
Method a çok fazla sorumluluk yüklenmiş.
Method içindeki tüm kodları try catch bloguna koyabilirsiniz. Hata oluşmaz ise raporları json olarak return eder. Hata oluşursa hatayı return edersiniz.
public function TrafikRaporlariDetayGetir(Request $request)
{
try {
// Model adınız farklı ise Aboneler yerine onu yazmalısınız.
$user = Aboneler::findOrFail($request->id);
$user = $user->kullanici_adi.$user->kullanici_adi_domain;
$raporlar = array();
for ($i = 0; $i < 10; $i++)
{
$raporekleme = DB::select("
select
concat(MONTH(acctstarttime),'-',YEAR(acctstarttime)) as tarih,
sum(radacct.acctoutputoctets) as upload,
sum(radacct.acctinputoctets) as download,
sum(radacct.acctinputoctets+radacct.acctoutputoctets) as toplam
from radacct
where MONTH(radacct.acctstarttime) = MONTH(curdate()- INTERVAL ".$i." month) and radacct.username='".$user."' ;
");
foreach ($raporekleme as $rapor)
if (isset($rapor->upload))
$raporlar = array_merge($raporlar, $raporekleme);
}
foreach ($raporlar as $rapor) {
if (strlen($rapor->tarih) == 6)
$rapor->tarih = "0" . $rapor->tarih;
$rapor->tarih="<a href=\"trafik-raporlari-detay?tarih=".$rapor->tarih.'&id='.$request->id."\"target=\"_blank\"style=\"font-weight: bold\">$rapor->tarih</a>";
if ($rapor->download > 1048576) {
$rapor->download = round($rapor->download * 0.00000095, 2) . ' <b><span style="color: lawngreen">GB</span></b>';
$rapor->upload = round($rapor->upload * 0.00000095, 2) . ' <b><span style="color: lawngreen">GB</span></b>';
$rapor->toplam = round($rapor->toplam * 0.00000095, 2) . ' <b><span style="color: lawngreen">GB</span></b>';
} elseif ($rapor->download > 1024) {
$rapor->download = round($rapor->download * 0.00098, 2) . ' <span style="color: #7dcd3a">MB</span>';
$rapor->upload = round($rapor->upload * 0.00098, 2) . ' <span style="color: #7dcd3a">MB</span>';
$rapor->toplam = round($rapor->toplam * 0.00098, 2) . ' <span style="color: #7dcd3a">MB</span>';
} else {
$rapor->download = $rapor->download . ' <b><span style="color: #b7cd9e">KB</span></b>';
$rapor->upload = $rapor->upload . ' <b><span style="color: #b7cd9e">KB</span></b>';
$rapor->toplam = $rapor->toplam . ' <b><span style="color: #b7cd9e">KB</span></b>';
}
}
return response()->json($raporlar);
} catch (\Exception $error) {
return response()->json([
'status' => 'error',
'message' => $error->getMessage()
]);
}
}