belongsTo(User::class)->select(['id', 'name', 'turename', 'mobile', 'headimg', 'userrate', 'personal_signature']); } public function category() { return $this->belongsTo(Category::class, 'category_id', 'id')->select(['id', 'name']); } public function thumb_resource() { return $this->belongsTo(Resource::class, 'thumb', 'id')->select(['path', 'id', 'url']); } public function attaches() { return $this->hasMany(Attach::class, 'course_id', 'id'); } public function subscribe() { return $this->hasOne(UserRecord::class); } public function comments() { return $this->hasMany(Comment::class); } public function video_watch_record() { return $this->hasMany(UserVideoWatchRecord::class, 'course_id', 'id'); } public function getVideoNumsAttribute() { return Video::query()->where('course_id', $this->attributes['id'])->where('status', ModelStatusEnum::OK)->count(); } public function getWatchProgressAttribute() { return UserRecord::query()->where('course_id', $this->attributes['id'])->where('user_id', login_user_id())->value('progress') ?? false; } public function organizations() { return $this->hasMany(OrganizationCourse::class); } public function collections() { return $this->hasMany(Collection::class); } public function getIsCollectionStatusAttribute() { return Collection::query()->where('course_id', $this->attributes['id'])->where('user_id', login_user_id())->status()->exists(); } }