У меня есть пользователь, студент и модель предмета, и я хочу зарегистрировать студента по многим предметам.Поэтому я создал контроллер StudentRegistration и в своем представлении создания я показываю все предметы, которые относятся к курсу текущего вошедшего в систему пользователя.
Функция создания StudentRegistration.php
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('name', $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() !!}
У меня есть это в моем Student.php для отношения многих ко многим:
public function subjects()
{
return $this->belongsToMany('App\Subject');
}
Я создал сводную таблицу с именем Student_Subject.Итак, во время магазина, как я могу сохранить все выбранные предметы в сводную таблицу (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);
$student->subjects()->attach($data['subject_id'][$i]);
}
}
Но я получаю следующую ошибку:
"Method Illuminate\Database\Query\Builder::subjects does not exist."
А как я могу просмотреть все предметы курса, на которых студент не зарегистрирован?
У меня есть это:
Route::get('/studentsubjects', function(){
$student_id = Student::where('user_id', Auth::id())->first();
$course = $student_id->course->id;
$subjects = $student_id->subjects;
echo 'Registered at' .'<br>';
foreach ($subjects as $registered) {
echo $registered->name .'<br>';
}
$unregistered = Subject::where('course_id', $course)->except($subjects);
});
И увидеть эту ошибку:
"Method Illuminate\Database\Query\Builder::except does not exist."
Надеюсь, кто-то может помочь