Grade.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Repositories\Models\School;
  3. use App\Repositories\Enums\ModelStatusEnum;
  4. use App\Repositories\Models\Model;
  5. use Carbon\Carbon;
  6. use Illuminate\Support\Facades\Cache;
  7. use Prettus\Repository\Contracts\Transformable;
  8. use Prettus\Repository\Traits\TransformableTrait;
  9. /**
  10. * Class Grade.
  11. *
  12. * @package namespace App\Repositories\Models\School;
  13. */
  14. class Grade extends Model implements Transformable
  15. {
  16. use TransformableTrait;
  17. protected $table = 'school_grades';
  18. /**
  19. * The attributes that are mass assignable.
  20. *
  21. * @var array
  22. */
  23. protected $guarded = [];
  24. /**
  25. * 根据name获取班级id
  26. * @param $name
  27. * @return mixed
  28. */
  29. public static function byNameGetId($name, $is_create = false)
  30. {
  31. return Cache::remember('model:Grade:byNameGetId:' . $name, Carbon::now()->addDay(), function () use ($name, $is_create) {
  32. $id = self::query()->where('name', $name)->value('id') ?? 0;
  33. if ($id) return $id;
  34. if (!$is_create) return $id;
  35. $model = self::query()->create(['name' => $name]);
  36. return $model['id'];
  37. });
  38. }
  39. public function getStudentNumsAttribute()
  40. {
  41. return Student::query()->where('grade_id', $this->attributes['id'])->where('status', ModelStatusEnum::OK)->count();
  42. }
  43. }