setName('upgrade')->setDescription('Version upgrades'); } protected function execute(Input $input, Output $output) { // 旧版本号 $version = DB::table('version')->where('id',1)->field('version')->find(); // 新版本号 $oldversion = Version::getVersion(); $output->writeln($version); if($version['version'] < $oldversion){ $output->writeln('存在版本差异'); $errarr = array(); $ver = ''; // 新版本大于旧版本 for($version['version'];$version['version'] < $oldversion;$version['version']++){ $name = "Version".$version['version']; $output->writeln("版本更新中..."); if(file_exists(__DIR__."\\..\\..\\common\\versionsql\\".$name)){ $info = file_get_contents(__DIR__."\\..\\..\\common\\versionsql\\".$name); if(empty($info)){ $output->writeln("没有找到对应文件"); continue; }else{ $output->writeln("找到版本文件"); } $sqlarr = explode(';',$info); foreach ($sqlarr as $k => $v) { if(empty($v)){ continue; } $output->writeln("执行版本文件"); try{ $result = DB::execute($v); if($result == 0){ // 执行成功 $output->writeln("执行成功,版本"); }else{ $errarr[] = $v; $output->writeln("执行失败"); } }catch(\Exception $e){ $output->writeln("SQL错误,".$e->getMessage()); } } }else{ $output->writeln("未找到版本更新文件"); } $ver = $oldversion; } if(empty($errarr)){ // 没有执行错误 // 数据库版本更新 DB::table('version')->where('id',1)->update(['version'=>$ver]); }else{ $output->writeln($errarr); } } } }