<?php /** * 修正调研老数据(多选单选支持多张图片问题) * Auth:dj * Date:2017-10-19 */ namespace Frontend\Controller\Index; use Common\Service\QuestionService; use Common\Service\RecordService; class ImgDataUpdateController extends \Common\Controller\Frontend\AbstractController { /** * 不是必须登录 * @var string $_require_login */ protected $_require_login = false; public function Index() { set_time_limit(0); ini_set("memory_limit", "1128M"); $question = new QuestionService(); // 查询多选和单选问题 $question_list = $question->list_by_conds(array('q_type' => array(1, 2))); // 获取问题id集合 $qids = array_column($question_list, 'qid'); $record = new RecordService(); // 获取回答详情记录 $record_list = $record->list_by_conds(array('q_id' => $qids)); try { // 开始事务 $question->start_trans(); // 循环更新问题信息 foreach ($question_list as $v) { $field = unserialize($v['q_field']); $field_new = array(); foreach ($field as $_v) { if (isset($_v['img_options'])) { // 如果是新数据 continue; } $img_options = array(); if (!empty($_v['option_img'])) { $img_options = array( array( 'option_img' => strval($_v['option_img']), 'option_img_url' => strval($_v['option_img_url']) ), ); } $field_new[] = array( 'option' => strval($_v['option']), 'img_options' =>$img_options ); } if(empty($field_new)){ continue; } // 组装更新选项 $update_data = array( 'q_field' => serialize($field_new) ); // 更新问题数据 $question->update($v['qid'], $update_data); } // 循环更新回答详情数据 foreach ($record_list as $v) { if (empty($v['answer'])) { // 如果答案为空 continue; } // 反序列化回答数据 $answer = unserialize($v['answer']); $answer_new = array(); foreach ($answer as $_v) { if (isset($_v['img_options'])) { // 如果是新数据 continue; } $img_options = array(); if (!empty($_v['option_img'])) { $img_options = array( array( 'option_img' => strval($_v['option_img']), 'option_img_url' => strval($_v['option_img_url']) ), ); } $answer_new[] = array( 'option' => strval($_v['option']), 'is_check' => intval($_v['is_check']), 'img_options'=>$img_options ); } if(empty($answer_new)){ continue; } // 组装更新答案 $record_data = array( 'answer' => serialize($answer_new) ); // 更新答卷记录数据 $record->update($v['qr_id'], $record_data); } // 提交事务 $question->commit(); } catch (\Exception $e) { // 事务回滚 $question->rollback(); exit('数据更新失败'); } exit('数据更新成功'); } }