123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace app\common\model;
- use think\facade\Db;
- use app\common\model\Contract;
- use app\common\model\ProjectSchedule;
- class Project extends Base
- {
- protected $schema = [
- 'id' => 'int',
- 'create_time' => 'datetime',
- 'update_time' => 'datetime',
- 'delete_time' => 'datetime',
- 'name' => 'varchar',
- 'responsibility_person_id' => 'int',
- 'desc' => 'text',
- 'source' => 'varchar',
- 'estimated_amount' => 'int',
- 'status' => 'varchar',
- 'project_start_date' => 'date',
- 'project_end_date' => 'date',
- 'dev_start_date' => 'date',
- 'dev_end_date' => 'date',
- 'pre_dev_time' => 'int',
- 'maintain_start_date' => 'date',
- 'maintain_end_date' => 'date',
- 'pre_maintain_time' => 'int',
- 'participants_id' => 'json',
- ];
- protected $type = [
- 'participants_id' => 'array'
- ];
- public function responsibilityPersonName()
- {
- return $this->belongsTo(Admin::class, 'responsibility_person_id', 'id');
- }
- public function contracts()
- {
- return $this->hasMany(Contract::class);
- }
- public function schedules()
- {
- return $this->hasMany(ProjectSchedule::class)
- ->field('s.*')
- ->field('a.real_name as updater')
- ->alias('s')
- ->order('s.start_date asc')
- ->join('admin a', 'a.id = s.updater_id', 'LEFT');
- }
- public function getParticipantsIdAttr($value, $data) {
- return array_map(fn($i) => (int) $i, json_decode($value) ?? []);
- }
- public function getParticipantsAttr($value, $data) {
- return (new Admin)->where('id', 'in', $this->participants_id)->select()->map(fn($admin) => $admin->real_name);
- }
- }
|