сохранить несколько входных данных в промежуточной таблице с тем же именем Laravel

#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. Прошу прощения, я неправильно понял, что вы хотите, потому что вопрос плохо написан и немного загадочен. Я попробую добавить другой ответ, но пока помогите нам помочь вам, переформулировав ваш вопрос, чтобы его было легче понять.