12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <?php
- namespace App\Repositories\Models\Course;
- use App\Repositories\Enums\ModelStatusEnum;
- use App\Repositories\Models\Model;
- use Carbon\Carbon;
- use Jenssegers\Mongodb\Eloquent\SoftDeletes;
- use Prettus\Repository\Contracts\Transformable;
- use Prettus\Repository\Traits\TransformableTrait;
- /**
- * Class CourseChapter.
- *
- * @package namespace App\Repositories\Models;
- */
- class Chapter extends Model implements Transformable
- {
- use TransformableTrait;
- use SoftDeletes;
- protected $table = 'course_chapters';
- /**
- * The attributes that are mass assignable.
- *
- * @var array
- */
- protected $guarded = [];
- public function videos()
- {
- return $this->hasMany(Video::class, 'course_chapter_id', 'id');
- }
- public function course()
- {
- return $this->belongsTo(Course::class);
- }
- /**
- * 获取目录
- * @param $id
- * @return array
- */
- public static function byCourseIdGetDirectory($course_id)
- {
- $directory = [];
- $data = self::query()->where('course_id', $course_id)->where('status', ModelStatusEnum::OK)->orderByDesc('sort')->get();
- foreach ($data as $d) {
- $directory[] = [
- 'id' => $d['id'],
- 'title' => $d['title'],
- 'children' => $d->videos()->where('status', ModelStatusEnum::OK)->where('published_at', '<', Carbon::now()->toDateTimeString())->orderByDesc('sort')->get(['id', 'title', 'duration', 'short_description'])->append(['duration_text', "progress"])
- ];
- }
- return $directory;
- }
- }
|