Project.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace app\common\model;
  3. use app\common\model\Contract;
  4. use app\common\model\ProjectSchedule;
  5. /**
  6. * @property array<ProjectSchedule> $schedules
  7. * @property array<Contract> $contracts
  8. */
  9. class Project extends Base
  10. {
  11. protected $schema = [
  12. 'id' => 'int', // id
  13. 'create_time' => 'datetime', // 创建时间
  14. 'update_time' => 'datetime', // 更新时间
  15. 'delete_time' => 'datetime', // 删除时间
  16. 'name' => 'varchar', // 名称
  17. 'responsibility_person_id' => 'int', // 责任人id
  18. 'desc' => 'text', // 描述
  19. 'source' => 'varchar', // 来源
  20. 'estimated_amount' => 'int', // 预估金额, 分为单位
  21. 'status' => 'varchar', // 状态值
  22. 'project_start_date' => 'date', // 项目周期开始时间
  23. 'project_end_date' => 'date', // 项目周期结束时间
  24. 'dev_start_date' => 'date', // 开发开始时间
  25. 'dev_end_date' => 'date', // 开发结束时间
  26. 'pre_dev_time' => 'int', // 约定开发周期,单位为天
  27. 'maintain_start_date' => 'date', // 维护开始时间
  28. 'maintain_end_date' => 'date', // 维护结束时间
  29. 'pre_maintain_time' => 'int', // 约定维护周期,单位为天
  30. 'participants_id' => 'json', // 项目参与人员
  31. ];
  32. protected $type = [
  33. 'participants_id' => 'array'
  34. ];
  35. public function responsibilityPersonName()
  36. {
  37. return $this->belongsTo(Admin::class, 'responsibility_person_id', 'id');
  38. }
  39. public function contracts()
  40. {
  41. return $this->hasMany(Contract::class);
  42. }
  43. public function schedules()
  44. {
  45. return $this->hasMany(ProjectSchedule::class)
  46. ->field('s.*')
  47. ->field('a.real_name as updater')
  48. ->alias('s')
  49. ->order('s.start_date asc')
  50. ->join('admin a', 'a.id = s.updater_id', 'LEFT');
  51. }
  52. }