В OctoberCMS у меня есть три таблицы:
Студенты, курсы и подписки (studentID, courseID, активный)
Когда студент подписывается на курс, он не активируется, пока администратор не активирует его. Это логично. Но когда администратор открывает форму курса из бэкэнда, он может выбрать учеников для подписки на этот курс, после чего они добавляются в таблицу подписок. Здесь я хотел бы обновить поле: активен автоматически.
Как мне это уточнить?
Я написал этот код, но он не работал:
public function afterSave()
{
foreach($this->students as $student)
{
$student->pivot->is_activated = true;
$student->pivot->save;
}
}
Редактировать:
Это весь мой код после @Hardik Satasiya совета:
class Course extends Model
{
public $belongsToMany = [
'students'=>[
'Sunsoft\Courses\Models\Student',
'table'=>'sunsoft_courses_student_course',
'order'=>'users.name',
'scope'=>'students',
'timestamps' => true,
'pivot'=>['id', 'is_activated'],
'pivotModel'=>'Sunsoft\Courses\Models\StudentCourse',
],
];
public function afterSave()
{
foreach($this->students as $student)
{
$student->pivot->is_activated = true;
$student->pivot->save;
$student->save;
}
}
}
class Student extends User
{
public $belongsToMany = [
'courses'=>[
'sunsoft\courses\models\Course',
'table'=>'sunsoft_courses_student_course',
'order'=>'sunsoft_courses_courses.name',
'pivot'=>['id', 'is_activated'],
'timestamps' => true,
'pivotModel'=>'Sunsoft\Courses\Models\StudentCourse',
],
];
}
class StudentCourse extends Model
{
public $belongsTo= [
'course'=>['sunsoft\courses\models\Course'],
'student'=>['sunsoft\courses\models\Student', 'scope'=>'students', 'order'=>'users.name'],
];
}
Это ошибка, которую я получаю:
http://prntscr.com/jhrfzu