public function getTopic() { return $this->hasOne(TicketTopic::className(), array('topic_id' => 'topic_id')); }
/** * 创建工单 * @return string|\yii\web\Response */ public function actionAdd_ticket() { $ticketModel = new Ticket(); $ticketCdataModel = new TicketCdata(); if (Yii::$app->request->post()) { $ticketForm = Yii::$app->request->post('Ticket'); $ticketCdataForm = Yii::$app->request->post('TicketCdata'); $fileForm = Yii::$app->request->post('File'); $ticketTopicRelationForm = Yii::$app->request->post('TicketTopicRelation'); $ticketModel->number = $ticketModel->newTicketNumber(); $ticketModel->user_id = Yii::$app->user->identity->id; $ticketModel->status_id = TicketStatus::CREATED; $ticketModel->type_id = Ticket::FEEDBACK_TICKET_TYPE; $ticketModel->source_id = 1; $ticketModel->ip_address = Yii::$app->request->getUserIP(); $ticketModel->created = date("Y-m-d H:i:s"); $ticketModel->updated = date("Y-m-d H:i:s"); $ticketCdataModel->subject = $ticketCdataForm['subject']; $ticketCdataModel->detail = $ticketCdataForm['detail']; $ticketCdataModel->priority = 1; //事务 $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { if (!$ticketModel->save()) { throw new Exception("数据存储失败,请检查数据库配置(error:1001)"); } $ticketCdataModel->ticket_id = $ticketModel->ticket_id; if (!$ticketCdataModel->save()) { throw new Exception("数据存储失败,请检查数据库配置(error:1002)"); } if (!empty($fileForm['file_index']) && is_array($fileForm['file_index'])) { foreach ($fileForm['file_index'] as $k => $v) { $fileModel = new File(); $fileModel->attribute = Ticket::tableName(); $fileModel->attribute_id = $ticketModel->ticket_id; $fileModel->file_name = $v['name']; $fileModel->file_index = $v['path']; $fileModel->size = $v['size']; $fileModel->type = $v['type']; if (!$fileModel->save()) { throw new Exception("数据存储失败,请检查数据库配置(error:1003)"); } } } if (!empty($ticketTopicRelationForm['topic_id']) && is_array($ticketTopicRelationForm['topic_id'])) { foreach ($ticketTopicRelationForm['topic_id'] as $v) { $ticketTopicRelationModel = new TicketTopicRelation(); $ticketTopicRelationModel->ticket_id = $ticketModel->ticket_id; $ticketTopicRelationModel->topic_id = $v; if (!$ticketTopicRelationModel->save()) { throw new Exception("数据存储失败,请检查数据库配置(error:1004)"); } } } $transaction->commit(); } catch (Exception $e) { $transaction->rollBack(); return $this->redirect(array('add_ticket')); } return $this->redirect(array('detail', 'number' => $ticketModel->number)); } else { $topicModel = new TicketTopic(); $topic_list = $topicModel->find()->select(array('topic_name', 'topic_id'))->indexBy('topic_id')->column(); $fileModel = new File(); $ticketTopicRelationModel = new TicketTopicRelation(); return $this->render('add_ticket', array('ticketModel' => $ticketModel, 'ticketCdataModel' => $ticketCdataModel, 'fileModel' => $fileModel, 'ticketTopicRelationModel' => $ticketTopicRelationModel, 'topic_list' => $topic_list)); } }