get(); foreach ($data['questions'] as $question) { $model = $questionList->firstWhere('id', $question['question_id']); if ($model) { // title: 题目, cate: 类型, options: 选项, score: 分值 $question['title'] = $model->title; $question['cate'] = $model->cate; $question['options'] = $model->options; array_push($questions, $question); $totalQuestions++; $totalScore+=$question['score']; } } $data['questions'] = $questions; $data['total_questions'] = $totalQuestions; $data['total_score'] = $totalScore; } return $data; } public function publish(Examination $examination, array $ids) { if ($examination->exam_status == ExamStatus::Published) { return $this->setError('已经发布了'); } $questions = []; foreach($examination->questions as $question) { $question['options'] = array_map(function ($option) { $option['selected'] = false; return $option; }, $question['options']); array_push($questions, $question); } $employees = Employee::whereIn('id', $ids)->get(); // 为员工生成考卷 foreach ($employees as $employee) { $examination->papers()->create([ 'employee_id' => $employee->id, 'content' => $questions, ]); } $examination->update(['exam_status' => ExamStatus::Published, 'published_at' => now()]); return true; } public function cancel(Examination $examination) { if ($examination->exam_status == ExamStatus::None) { return $this->setError('已经取消了'); } $examination->papers()->delete(); $examination->update(['exam_status' => ExamStatus::None, 'published_at' => null]); return true; } }