У меня есть класс модели с именем CourseSession
, и его таблица course_session
, и у меня есть другая модель с именем Student
, и ее таблица student
, и в каждой сессии много студентов, и каждый студент может бытьво многих сессиях.Итак, я создал третью таблицу с именем student_session
с student_id
, session_id
, presence
и столбцами меток времени laravels.
Для создания сеанса необходимо иметь список студентов, и я получаю их от $request
вот так:
$validatedData = $request->validate([
'students' => 'required',
]);
students
- это массив идентификаторов студентов!
это моя CourseSession
модель:
class CourseSession extends Model
{
protected $table = 'course_sessions';
protected $guarded = [];
public function course()
{
return $this->belongsTo('App\Course');
}
public function students()
{
return $this->belongsToMany('App\Student', 'student_session','session_id', 'student_id');
}
}
и это моя модель студента:
class Student extends Model
{
protected $guarded = [];
public function courses()
{
return $this->belongsToMany('App\Course');
}
public function exams()
{
return $this->belongsToMany('App\Exam');
}
public function sessions()
{
return $this->belongsToMany('App\CourseSession', 'student_session', 'student_id', 'session_id');
}
}
Я создаю сессию так:
$session = new CourseSession();
$session->course_id = $course->id;
$session->save();
и я сохраняю студентов таким образом:
$sessions = $session->students()->create(['session_id' => $session->id, 'student_id' => 1, 'presence' => 1]);
но я получаю эту ошибку:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'session_id' in 'field list' (SQL: insert into `students` (`session_id`, `student_id`, `presence`, `updated_at`, `created_at`) values (25, 1, 1, 2019-04-28 14:24:48, 2019-04-28 14:24:48))
в соответствии с ошибкой, он пытается записать данные в таблицу students
но я хочу написать их на student_session
столе!
что не так в моих кодах?