id; $Model = new self; $result = $Model->allowField(true)->save($params); if (false === $result) { // 验证失败 输出错误信息 throw new Exception($Model->getError()); } return true; } /** *变更状态 */ public static function changeStatus($id, $status) { $model = new self(); if ($model->save(['status' => $status], ['id' => $id]) == false) { throw new Exception('变更失败'); } return true; } //根据时间获取列表 public static function getTimeList($start_time, $end_time) { $staff = Staff::info(); $model = new EventModel(); $start_time = $start_time . ' 00:00:00'; $end_time = $end_time . ' 23:59:59'; $events = $model->where([ 'staff_id' => $staff->id ])->where(function ($query) use ($start_time, $end_time) { $query->where(['start_time' => ['between', [$start_time, $end_time]]])->whereOr([ 'end_time' => [ 'between', [ $start_time, $end_time ] ] ]); })->select(); $data = []; $start_time = strtotime($start_time); $end_time = strtotime($end_time); for ($start_time; $start_time <= $end_time; $start_time = strtotime('+1 day', $start_time)) { $time = date('Y-m-d', $start_time); $data[$time] = []; foreach ($events as $k => $v) { if (strtotime($v['start_time']) <= $start_time + 86400 - 1 && strtotime($v['end_time']) >= $start_time) { $data[$time][] = $v; } } } foreach ($data as &$times) { foreach ($times as &$ves) { $ves['start_time'] = date('Y-m-d H:i', strtotime($ves['start_time'])); $ves['end_time'] = date('Y-m-d H:i', strtotime($ves['end_time'])); } } return $data; } //负责人 public function staff() { return $this->hasOne(Staff::class, 'id', 'staff_id')->field('id,name'); } }