/** * @usage 写入被试的答卷信息 * @param int $examinee_id * @param string $paper_name * @param string $option_str * @param array $number_array * @throws Exception * @return boolean */ public static function insertQuestionAns($examinee_id, $paper_name, $option_str, $number_array, $time) { $project_id = self::getProjectId($examinee_id); if (!$project_id) { return false; } $paper_name = strtoupper($paper_name); switch ($paper_name) { case 'EPQA': self::checkEPQA($option_str, $number_array, $project_id); break; case 'EPPS': self::checkEPPS($option_str, $number_array, $project_id); break; case 'CPI': self::checkCPI($option_str, $number_array, $project_id); break; case '16PF': self::checkKS($option_str, $number_array, $project_id); break; case 'SCL': self::checkSCL($option_str, $number_array, $project_id); break; case 'SPM': self::checkSPM($option_str, $number_array, $project_id); break; default: throw new Exception(self::$error_state . '-不存在试卷-' . $paper_name); } $paper_id = MemoryCache::getPaperDetail($paper_name)->id; try { // Create a transaction manager $manager = new TxManager(); // Request a transaction $transaction = $manager->get(); $question_ans = new QuestionAns(); #将事务设置到每一次的new之后 $question_ans->setTransaction($transaction); $question_ans->option = $option_str; $question_ans->paper_id = $paper_id; $question_ans->examinee_id = $examinee_id; $question_ans->question_number_list = implode("|", $number_array); $question_ans->time = $time; if ($question_ans->save() == false) { $transaction->rollback(self::$error_state . '-数据库插入失败-' . print_r($question_ans, true)); } $transaction->commit(); return true; } catch (TxFailed $e) { throw new Exception($e->getMessage()); } }