У меня есть таблица «Пользователь», «Студент», «Курс» и «Предмет»
В таблице «Студент» есть user_id. Я установил отношение один к одному, потому что студент является пользователем.
Так что в моемРегистрация студентов У меня есть функция создания, которая получает все предметы курса, которые этот студент в настоящее время записал, и я сделал это так:
public function create()
{
$user_id = Auth::user()->id;
$student_id = Student::where('user_id', $user_id)->first();
$course = $student_id->course->id;
$subjects = Subject::where('course_id', $course)->get();
return view('student.create', compact('subjects'));
}
Вид выглядит следующим образом:
{!! Form::open(['method' => 'POST', 'action'=>'StudentRegistration@store', 'files'=>true]) !!}
@foreach($subjects as $subject)
<div class="label-box">
{!! Form::label('subject_id', $subject->name) !!}
{!! Form::checkbox('subject_id[]', $subject->id, null, ['class'=>'form-control']) !!}
</div>
@endforeach
<div class="form-group">
{!! Form::submit('Create User', ['class'=>'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
Затем в методе store мне удается обновить сводную таблицу (student_subject)
public function store(Request $request)
{
$data = $request->except('_token');
$subject_count = count($data['subject_id']);
for($i=0; $i < $subject_count; $i++){
$student = Student::where('user_id', Auth::user()->id)->first();
$student->subjects()->attach($data['subject_id'][$i]);
}
Однако я заметил, что даже при том, что студент зарегистрирован по определенному предмету, этот же предмет все еще отображается в представлении индекса регистрации, что приведет его к двойной регистрации.
Итак, как я могу просмотреть только предметы того курса, к которому принадлежит студент, и которые еще не включены в сводную таблицу?