Создание нескольких листов с отчетами о студентах на одной веб-странице - PullRequest
0 голосов
/ 11 декабря 2018

Я создаю приложение для управления студентами.Застрял в просмотре отчетов класса.Я могу показать индивидуальные отчеты (оценки, проценты, личные данные, психомоторные области и т. Д.) Для каждого ученика в классе.Но мне нужно показать все отчеты для каждого ученика в классе на одной веб-странице с разрывами страниц между ними.Так что на очень длинной веб-странице у нас будет Student1 со всеми результатами и информацией, Student2 со всеми результатами и информацией.В моей таблице результатов на БД есть столбцы studentId и StudentClass для различения вещей.Я чувствую, что должен использовать петлю, но не могу понять, как это сделать.Ниже мой контроллер:

public function viewclassresults(Request $request){



   $term = $request->get('term');
   if ($term ==1) {
       $termended = "First";
   }
   $session = $request->get('session');
   $sessionnow = Session::where('id', $session)->first()->name; 
   $classname = $request->classname;
   $class_id = $request->class_id;
   $teachersignature = Stclass::where('id', $class_id)->first()->teachersignature;
   $teachername = Stclass::find($class_id)->teachers()->first()->fullName;

   $setting = Setting::all()->first(); 

   $grades = DB::table('grades')->get();
   $comments = Comment::all();

      $results = DB::table('results')
                    ->where('studentClass', $class_id)->where('session', $session)->where('term', $term)->whereNull('deleted_at')
                    ->selectRaw('results.*, (results.test1 + results.test2)/2 as cav, (results.exam + (results.test1 + results.test2)/2)/2 as totalmark, results.studentId as classstudents')->get();









       $rating = DB::table('ratings')->where('term', $term)->where('session', $session)->first();



        if($results->isEmpty()){

           return "No Result";
          // 
        } else{
            return view('teacher.results.viewclassresults', compact('subjects', 'studentname', 'regNumber', 'studentClass', 'studentId', 'term', 'session', 'results', 'student', 'setting', 'sessionnow', 'classname', 'termended', 'grades', 'comments', 'rating', 'teachername', 'resultpercent', 'resultpercentclass', 'teachersignature', 'classstudents'));
          // 
      }



}

Это $ результаты, которые на самом деле показывают отдельные результаты.Обратите внимание, что resultid (id) - это уникальный и первичный ключ в моей таблице результатов.ниже часть моей таблицы:

моя таблица результатов

1 Ответ

0 голосов
/ 12 декабря 2018

Я использую ограничение, ждущее загрузку.

$student = Student::with(['results'=> function($q1) use ($term, $studentId) {
    $q1->where('term', $term)
    ->where('studentId', $studentId)
    ->whereNull('deleted_at')
    ->selectRaw('results.*, (results.test1 + results.test2) as cav, results.exam + results.test1 + results.test2 as totalmark');

},'ratings' => function($q2) use ($term, $session){
    $q2->where('term', $term)
    ->where('session', $session)
    ->first();
}])->get();

return view('view.template',compact('student'));

Я вижу, что у вас много результатов.Вы можете просто добавить метод в модель вашего студента и загружать результаты другого типа.Я не уверен, каковы ваши отношения, но вы просто продолжаете цепочку выше.

Условные выражения в контроллере не нужны.Вы можете делать все это в представлении и разграничивать различные партиалы.

Представление будет выглядеть примерно так:

@foreach($student as $student)
    @if($student->result->empty())
        <h1>No student result.</h1>
    @else
        @foreach($student->result as $result)
            //Get student result
        @endforeach
    @endif
@endforeach

Этот код не проверен.Надеюсь, поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...