'date', 'teach_end_date' => 'date', 'signup_start_date' => 'date', 'signup_end_date' => 'date', 'capacity' => 'integer', 'cover_media_id' => 'integer', 'promo_media_id' => 'integer', 'news_id' => 'integer', 'progress_status' => 'integer', 'published' => 'integer', 'sort' => 'integer', 'signup_form_schema' => 'array', 'recruit_targets' => 'array', 'main_speakers' => 'array', ]; public function courseSystemItem(): BelongsTo { return $this->belongsTo(DictItem::class, 'course_system_dict_item_id'); } public function courseTypeItem(): BelongsTo { return $this->belongsTo(DictItem::class, 'course_type_dict_item_id'); } public function autoAddTeacherItem(): BelongsTo { return $this->belongsTo(DictItem::class, 'auto_add_teacher_dict_item_id'); } public function coverMedia(): BelongsTo { return $this->belongsTo(CourseMedia::class, 'cover_media_id'); } public function promoMedia(): BelongsTo { return $this->belongsTo(CourseMedia::class, 'promo_media_id'); } public function news(): BelongsTo { return $this->belongsTo(News::class); } public function sessions(): HasMany { return $this->hasMany(CourseSession::class); } public function signups(): HasMany { return $this->hasMany(CourseSignup::class); } public function checkinDays(): HasMany { return $this->hasMany(CourseCheckinDay::class); } }