LessonTeacher.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Repositories\Models\School;
  3. use App\Repositories\Enums\ModelStatusEnum;
  4. use App\Repositories\Models\Base\Admin;
  5. use App\Repositories\Models\Model;
  6. use Carbon\Carbon;
  7. use Prettus\Repository\Contracts\Transformable;
  8. use Prettus\Repository\Traits\TransformableTrait;
  9. /**
  10. * Class Room.
  11. *
  12. * @package namespace App\Repositories\Models\School;
  13. */
  14. class LessonTeacher extends Model implements Transformable
  15. {
  16. use TransformableTrait;
  17. protected $table = 'school_lesson_teacher';
  18. /**
  19. * The attributes that are mass assignable.
  20. *
  21. * @var array
  22. */
  23. protected $guarded = [];
  24. public function lesson()
  25. {
  26. return $this->belongsTo(Lesson::class)->select(['id', 'name', 'lesson_hour', 'credit']);
  27. }
  28. public function teacher()
  29. {
  30. // return $this->belongsTo(Teacher::class)->select(['id', 'name', 'account']);
  31. return $this->belongsTo(Admin::class, 'teacher_admin_id')->select(['id', 'name', 'username']);
  32. }
  33. public function getProgressAttribute()
  34. {
  35. $id = $this->attributes['id'];
  36. $total = LessonSchedule::query()->where('lesson_teacher_id', $id)->where('status', ModelStatusEnum::OK)->count();
  37. $current = LessonSchedule::query()->where('lesson_teacher_id', $id)->where('day', '<', date('Y-m-d'))->where('status', ModelStatusEnum::OK)->count();
  38. if (!$total) return 0;
  39. return round($current / $total * 100);
  40. }
  41. public function grade()
  42. {
  43. return $this->belongsTo(Grade::class)->select(['id', 'name']);
  44. }
  45. }