[ '' => 0, '待审核' => 1, '已处理' => 2, ], 'grad' => [ '' => 0, '一般' => 1, '重要' => 2, '紧急' => 3, '重要且紧急' => 4, ], ]; function __construct(array $attributes = []) { foreach (self::$enums as &$enum) { $enum = $enum + array_flip($enum); } parent::__construct($attributes); } public function getStatusAttribute($value) { if (!$value) return ''; return self::$enums['status'][$value]; } public function setStatusAttribute($value) { if (!$value) return 0; if (is_numeric($value)) { $this->attributes['status'] = $value; } else { $this->attributes['status'] = self::$enums['status'][$value]; } } public function getGradAttribute($value) { if (!$value) return ''; return self::$enums['grad'][$value]; } public function setGradAttribute($value) { if (!$value) return 0; if (is_numeric($value)) { $this->attributes['grad'] = $value; } else { $this->attributes['grad'] = self::$enums['grad'][$value]; } } // 创建人 public function creator(): BelongsTo { return $this->belongsTo(User::class, 'creator_id'); } // 审核人 public function reviewer(): BelongsTo { return $this->belongsTo(User::class, 'reviewer_id'); } // 关联订单 public function order(): BelongsTo { return $this->belongsTo(Order::class); } // 工单类型 public function type(): BelongsTo { return $this->BelongsTo(WorkOrderType::class,'work_order_type_id'); } // 生成问题件类型 public function issueType():BelongsTo { return $this->belongsTo(OrderIssueType::class,'order_issue_type_id'); } /** 对应问题件 */ public function orderIssue(): BelongsTo { return $this->belongsTo(OrderIssue::class,'order_id','order_id'); } public function scopeFilter($query, $filters) { return $filters->apply($query); } /** 默认 with 参数 */ public function scopeDefaultWith($query) { $query->with(['type','issueType','creator','reviewer','order'=>function($query){ /** @var $query Builder */ $query->with('packages','logistic'); },'orderIssue'=>function($query){ /** @var $query Builder */ $query->with(['issueType','logs'=>function($query){ if (Gate::denies('订单管理-问题件-客户不可见')){ $query->with('user')->orderByDesc('created_at'); } else{ $query->with('user')->where('tag','=',0)->orderByDesc('created_at'); } }]); }]); $query->with(['type', 'creator', 'order' => function ($query) { /** @var $query Builder */ $query->with(['packages', 'issue'=>function($query){ /** @var $query Builder */ $query->with(['issueType','logs'=>function($query){ if (Gate::denies('订单管理-问题件-客户不可见')){ $query->with('user')->orderByDesc('created_at'); } else{ $query->with('user')->where('tag','=',0)->orderByDesc('created_at'); } }]); }, 'logistic']); }, 'reviewer','issueType']); } }