#laravel #eloquent #laravel-5.2
#laravel #красноречивый #laravel-5
Вопрос:
Я разрешаю пользователям добавлять несколько предметов «на лету» при добавлении ученика, например, когда вы добавляете ученика, вы можете добавить предмет, например математику, затем вы зададите его атрибуты, имя преподавателя, зачетные часы и т.д. Но при сохранении в db мне нужно сохранить информацию в моей промежуточной таблице students_subjects
id | student_id | subject_id | teacher_name | credit_hours
Проблема в том, как я могу сохранить информацию для каждого объекта. Я могу сохранить subject_id в скрытом поле и получить это, но как я узнаю, что этот идентификатор связан с этим конкретным предметом, и получить преподавателя и зачетные часы для этого идентификатора.
Ответ №1:
как я могу сохранить информацию по каждому предмету
DB::table('students_subjects')->insert([
'student_id' => $input['studentId'],
'subject_id' => $input['subjectId'],
'teacher_name' => $input['teacherName'],
'credit_hours' => $input['creditHours'],
]);
Я могу сохранить subject_id в скрытом поле и получить это, но как я узнаю, что этот идентификатор связан с этой конкретной темой
Если у вас есть subject_id — значит, вы знаете, к какой теме это относится.
получите преподавателя и зачетные часы для этого идентификатора
$result = DB::table('students_subjects')
->select(['teacher_name', 'credit_hours'])
->where('id', $id)
->first();
Ответ №2:
Итак, у вас есть 3 таблицы. И много-много отношений
- Для студентов
- темы
- student_subject
Взгляните на https://laravel.com/docs/5.2/eloquent-relationships#many-to-many чтобы узнать об определении ваших моделей eloquent.
Исходя из вашего вопроса, я бы подумал об изменении того, как вы структурируете свою базу данных.
Учащийся 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. Моя структура не может быть такой, я ищу решение моей проблемы, заданной в вопросе на самом деле.
2. Прошу прощения, я неправильно понял, что вы хотите, потому что вопрос плохо написан и немного загадочен. Я попробую добавить другой ответ, но пока помогите нам помочь вам, переформулировав ваш вопрос, чтобы его было легче понять.