attributes['duration']); } public function comments() { return $this->hasMany(Comment::class, 'course_video_id'); } public function attaches() { return $this->hasMany(Attach::class, 'course_video_id'); } public function course_chapter() { return $this->belongsTo(Chapter::class); } public function course() { return $this->belongsTo(Course::class); } public function getProgressAttribute() { return UserVideoWatchRecord::query()->where('video_id', $this->attributes['id'])->where('user_id', login_user_id())->value('progress') ?? 0; } public function url_resource() { return $this->belongsTo(Resource::class, 'url', 'id')->select(['path', 'id', 'url']); } public function subtitle_zh_path_resource() { return $this->belongsTo(Resource::class, 'subtitle_zh_path', 'id')->select(['path', 'id', 'url']); } public function subtitle_en_path_resource() { return $this->belongsTo(Resource::class, 'subtitle_en_path', 'id')->select(['path', 'id', 'url']); } }