#php #laravel
#php #laravel
Вопрос:
Я работаю в Laravel 7, извлекаю данные из своей БД и показываю ученику его / ее оценку на странице оценки в процентах с помощью следующих кодов. В моем StudentOperationController.php
public function show_result($id) {
$data['result_info'] = Oex_result::where('id', $id)->get()->first();
$data['student_info'] = Oex_students::select(['oex_students.*', 'oex_exam_masters.title', 'oex_exam_masters.exam_date'])->join('oex_exam_masters', 'oex_students.exam', '=', 'oex_exam_masters.id')->where('oex_students.id', Session::get('id'))->get()->first();
return view('student.show_result', $data);
}
и в моем show_result.blade.php
<h2>Result Information</h2>
<table class="table">
<tr>
<td>Number Correct</td>
<td>{{ $result_info->yes_ans }}</td>
</tr>
<tr>
<td>Number Incorrect</td>
<td>{{ $result_info->no_ans }}</td>
</tr>
<tr>
<td>Total</td>
<td>{{ round($result_info->yes_ans / ($result_info->yes_ans $result_info->no_ans) * 100 , 1) }} %</td>
</tr>
</table>
Причина, по которой я показываю это, заключается в том, что он работает так, как ожидалось. это находится на панели управления студентами. В моем администраторе я пытаюсь сделать то же самое и показать, что учащиеся получают данные для его / ее результата экзамена. В моей базе данных у меня есть данные типа json, например: {"2":"YES","3":"YES","8":"YES"}
. Я все еще изучаю Laravel и застрял на том, как передать эти данные моему администратору. Я явно делаю что-то не так и нуждаюсь в помощи. Вот что я пробовал:
AdminController.php
public function manage_students($id)
{
$data['result_info'] = Oex_result::where('id', $id)->get()->first();
// dd($data);
$data['student_info'] = Oex_students::select(['oex_students.*', 'oex_exam_masters.title', 'oex_exam_masters.exam_date'])->join('oex_exam_masters', 'oex_students.exam', '=', 'oex_exam_masters.id')->where('oex_students.id', Session::get('id'))->get()->first();
$data['exams'] = Oex_exam_master::where('status', '1')->get()->toArray();
$data['students'] = Oex_students::select(['oex_students.*', 'oex_exam_masters.title as exam_name'])
->join('oex_exam_masters', 'oex_students.exam', '=', 'oex_exam_masters.id')
->get()->toArray();
return view('admin.manage_students', $data);
}
и в моем manage_students.blade.php , У меня есть
<tbody>
@foreach($students as $key => $student)
<tr>
<td>{{ $key 1 }}</td>
<td>{{ $student['name'] }}</td>
<td>{{ $student['email'] }}</td>
<td>{{ $student['mobile_no'] }}</td>
<td>{{ $student['exam_name'] }}</td>
{{-- <td>N/A</td> --}}
<td>{{ round($result_info->yes_ans / ($result_info->yes_ans $result_info->no_ans) * 100 , 1) }} % </td>
@if($student['status']== 1)
<td><input data-id="{{ $student['id'] }}" class="student_status" type="checkbox" name="status" checked></td>
@else
<td><input data-id="{{ $student['id'] }}" class="student_status" type="checkbox" name="status"></td>
@endif
<td>
<a href="{{ url('admin/edit_student/'. $student['id']) }}" class="btn btn-primary btn-sm">Edit</a>
<a href="{{ url('admin/delete_student/' . $student['id']) }}" class="btn btn-danger btn-sm">Delete</a>
</td>
</tr>
@endforeach
</tbody>
При этом я получаю сообщение об ошибке Too Few arguments to function ... 0 passed and exactly 1 expected
Я не могу воспроизвести то, что у меня есть для панели управления учащимися, и из-за недостатка знаний Laravel у меня возникают проблемы с решением этой проблемы. Итак, любая помощь будет с благодарностью принята. Если я что-то упустил, пожалуйста, дайте мне знать, чтобы я мог отредактировать свой вопрос. Заранее спасибо.
Редактировать: маршрут manage_students:
Route::get('admin/manage_students', 'AdminController@manage_students');
Редактировать номер 2:
Too few arguments to function AppHttpControllersAdminController::manage_students(), 0 passed and exactly 1 expected
C:laragonwwwlionsfieldtestappHttpControllersAdminController.php:146
Ссылка на эту строку:
public function manage_students($id)
Редактировать номер 3:
в resources/views/layouts/app.blade.php
<li class="nav-item">
<a href="{{ url('admin/manage_students') }}" class="nav-link">
<i class="nav-icon fas fa-school"></i>
<p>
Student Management
</p>
</a>
</li>
Редактировать номер 4:
Страница manage_student содержит данные из результатов экзаменов нескольких студентов
Комментарии:
1. @lagbox Спасибо. Я отредактировал свой вопрос, чтобы включить всю ошибку.
2. идентификатор таблицы oex_result, который в данном случае идентификатор oex_result-> id = 2
3. откуда вы ожидаете, что это произойдет? поскольку для этого маршрута не определен параметр маршрута
4. Да, и это именно то, где я застрял. Если я добавлю /{id} к маршруту, вся страница выдает 404, так что, как я уже сказал, моя неопытность не помогает
5. Я посмотрю, что я могу придумать, и буду держать вас в курсе. Спасибо @lagbox.
Ответ №1:
Эта функция запрашивает $id;
public function manage_students($id)
Этот маршрут не проходит ни одного
Route::get('admin/manage_students', 'AdminController@manage_students');
Как я вижу, вы фильтруете по результатам, которые в этом случае вам нужны $result id
Route::get('admin/manage_student/{id}', 'AdminController@manage_students');
Итак, вам нужно передать идентификатор результата, но давайте предположим, что есть идентификатор результатов по умолчанию
public function manage_students($id=2)
тогда этот маршрут работает, потому что $id является необязательным / предопределенным. Route::get('admin/manage_students', 'AdminController@manage_students');
И если вы передадите идентификатор, он будет использовать
Route::get('admin/manage_student/{id}', 'AdminController@manage_students');
Создайте 2 маршрута и сделайте параметр необязательным / предопределенным.
если вы перейдете в /admin/manage_student, он будет использовать идентификатор 2, но если вы передадите /admin/manage_student/5, он будет использовать 5