1. Не совсем понятно откуда у вас появляется во view переменная $i. Ее либо надо туда передавать, либо там инициализировать.
2. При этом делать этого не надо, у blade есть
The Loop Variable и стоит использовать {{$loop->index}}
3. Этот код странен. Вы выбираете все из базы и начинаете фильтровать циклом. Зачем вам БД?
$students = Students::all()->where('class','=',$i);
Как бы
$students = Students::where('class','=',$i)->get();
4. Но и это не совсем правильно. Совсем правильно будет вместо
if (isset($i)) {
$students = Students::all()->where('class','=',$i);
} else {
$students = Students::all();
}
сделать:
$students = Students::when($i, function($builder, $i){ return $builder->where('class', '=', $i); } )->get();
Вот только параметр $i у вас обязательный - что в роуте что в методе. Каким образом у вас может возникнуть ситуация когда $i в методе необьявлена? По идее никогда - у вас вылетит эксепшн
5. Смысл этого кода какой?
try {
$dbconnect = DB::connection()->getPDO();
$dbname = DB::connection()->getDatabaseName();
} catch(Exception $e) {
return redirect('/exception');
}