我允许用户在添加学生时动态添加多个科目,例如,当您添加学生时,您可以添加一个科目,即数学然后您将设置其属性教师姓名,学分时间等。但是在保存时到db我需要将信息保存到我的中间表students_subjects
id | student_id | subject_id | teacher_name | credit_hours
问题在于如何保存每个主题的信息。我可以将subject_id保存在隐藏字段中并获取该信息,但我怎么知道这个id与该特定主题相关并获得该ID的教师和学分。
答案 0 :(得分:0)
所以你有3张桌子。和许多关系
请查看https://laravel.com/docs/5.2/eloquent-relationships#many-to-many,了解如何定义您的雄辩模型。
根据您的问题,我会考虑更改您的数据库结构。
学生hasMany
科目。一个学科属于老师。
所以我将有4个表如下:
students
- id
- first_name
- last_name
student_subject
- student_id
- subject_id
- credit_hours (assuming this is the number of hours the student has studied?)
subjects
- id
- name
- credit_hours (assuming this is the total credit value)
teachers
- id
- name
- subject_id
如果教师可以教授很多科目,那么您需要添加subject_teacher
数据透视表。
添加学生时,如果您可以提供值为subject_id的主题的下拉列表,那么当您选择主题时 - 您将subject_id发布回php准备插入数据库。
答案 1 :(得分:0)
如何保存每个主题的信息
DB::table('students_subjects')->insert([
'student_id' => $input['studentId'],
'subject_id' => $input['subjectId'],
'teacher_name' => $input['teacherName'],
'credit_hours' => $input['creditHours'],
]);
我可以将subject_id保存在隐藏字段中并获取该内容,但我怎么知道此ID与该特定主题相关
如果你有subject_id - 那么你就知道它与哪个主题有关。
获取该ID的教师和学分时间
$result = DB::table('students_subjects')
->select(['teacher_name', 'credit_hours'])
->where('id', $id)
->first();