【发布时间】:2018-06-05 09:35:28
【问题描述】:
我有一个用户、学生、课程和主题表
Student 表有 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]);
}
但是,我注意到即使学生注册了特定科目,注册索引视图中仍会显示同一科目,这将导致他进行双重注册。
那么,我怎样才能只查看学生所属的课程的科目,而这些科目尚未在数据透视表中?
【问题讨论】:
-
请编辑您的问题并用数组替换图像。
-
@HamzaAbdaoui 我刚刚编辑过
-
但是你到底想要什么?你能告诉我们想要的输出吗?
-
@WosleyAlarico 那么你有什么尝试?还有什么你不明白?您提到的链接正是您所需要的。如果传递给 array_udiff 的回调对于任何比较都返回零,则当前处理的元素将不在 array_udiff() 返回的数组中。