Requirement.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App;
  3. use Illuminate\Database\Eloquent\Model;
  4. use App\Traits\ModelLogChanging;
  5. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  6. use Illuminate\Database\Eloquent\Relations\BelongsToMany;
  7. class Requirement extends Model
  8. {
  9. use ModelLogChanging;
  10. use \App\Traits\ModelTimeFormat;
  11. use \Illuminate\Database\Eloquent\SoftDeletes;
  12. //
  13. public $fillable = [
  14. 'user_id',//状态
  15. 'content', //内容
  16. 'title', //标题
  17. 'score', //分数
  18. 'status',//状态
  19. 'began_at',//开始时间
  20. 'finished_at',//完成时间
  21. ];
  22. public $dates = [
  23. 'began_at',//开始时间
  24. 'finished_at',//完成时间
  25. ];
  26. static public $enums=[
  27. 'status'=>[
  28. ''=>0,
  29. '已发布'=>1,
  30. '已开始'=>2,
  31. '已完成'=>3,
  32. ],
  33. ];
  34. function __construct(array $attributes = [])
  35. {
  36. foreach (self::$enums as &$enum) {
  37. $enum=$enum+array_flip($enum);
  38. }
  39. parent::__construct($attributes);
  40. }
  41. public function getStatusAttribute($value)
  42. {
  43. if(!$value)return '';
  44. return self::$enums['status'][$value];
  45. }
  46. public function setStatusAttribute($value)
  47. {
  48. if(!$value)return 0;
  49. $this->attributes['status']=self::$enums['status'][$value];
  50. }
  51. public function creator(): BelongsTo
  52. {
  53. return $this->belongsTo(User::class,'user_id','id');
  54. }
  55. public function workers(): BelongsToMany
  56. {
  57. return $this->belongsToMany(User::class)
  58. ->using(RequirementUser::class)
  59. ->withPivot(['score']);
  60. }
  61. public function scopeFilter($query, $filters)
  62. {
  63. return $filters->apply($query);
  64. }
  65. }