SqlController.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Model\Data;
  4. use App\Model\Department;
  5. use App\Model\Job;
  6. use App\Model\Log;
  7. use App\Model\Project;
  8. use App\Model\Table_eight;
  9. use App\Model\Table_five;
  10. use App\Model\Table_four;
  11. use App\Model\Table_name;
  12. use App\Model\Table_nine;
  13. use App\Model\Table_one;
  14. use App\Model\Table_seven;
  15. use App\Model\Table_six;
  16. use App\Model\Table_three;
  17. use App\Model\Table_two;
  18. use App\Model\Tablelist;
  19. use App\Model\User;
  20. use Illuminate\Http\Request;
  21. use App\Http\Requests;
  22. use App\Http\Controllers\Controller;
  23. use Illuminate\Support\Facades\DB;
  24. use Illuminate\Support\Facades\Input;
  25. use Illuminate\Support\Facades\Storage;
  26. use Maatwebsite\Excel\Facades\Excel;
  27. class SqlController extends CommonController
  28. {
  29. public function index()
  30. {
  31. $data = Data::all();
  32. return view('admin.sql.index',compact('data'));
  33. }
  34. //备份导出sql为xls
  35. public function backups(Request $request)
  36. {
  37. //生成备份文件名
  38. $excle_path = date('YmdHis');
  39. //数据库所有表名
  40. $tables = DB::select('SHOW TABLES');
  41. $tables = json_decode( json_encode( $tables),true);
  42. $table_name = array();
  43. foreach($tables as $k => $v){
  44. $table_name[] = $v['Tables_in_zcju'];
  45. }
  46. //存datas表
  47. $input = $request->all();
  48. $input['path'] = $excle_path.'_'.$input['name'] ;
  49. Data::create($input);
  50. //循环查表导出excle文件
  51. Excel::create($excle_path.'_'.$request->all()['name'],function($excle) use ($table_name){
  52. foreach($table_name as $value){
  53. $data = DB::table($value)->get();
  54. $data = json_decode( json_encode( $data),true);
  55. $excle->sheet($value,function($sheet) use ($data){
  56. $sheet->fromArray($data);
  57. });
  58. }
  59. })->store('xls',storage_path('databases/'));
  60. $this->mkFolder(storage_path('databases/'));
  61. return redirect('/sql');
  62. }
  63. // 恢复备份 xls导入到数据库
  64. public function recovery($id)
  65. {
  66. $path = Data::where('id','=',$id)->first()->path;
  67. $filePath = 'storage/databases/'.$path.'.xls';
  68. Excel::load($filePath, function($reader) {
  69. $data = $reader->toArray();
  70. foreach($data[0] as $value){
  71. if(!Data::find($value['id'])){
  72. Data::create($value);
  73. }else{
  74. Data::where('id','=',$value['id'])->update($value);
  75. }
  76. }
  77. foreach($data[1] as $value){
  78. if(!Department::find($value['id'])){
  79. Department::create($value);
  80. }else{
  81. Department::where('id','=',$value['id'])->update($value);
  82. }
  83. }
  84. foreach($data[2] as $value){
  85. if(!Log::find($value['id'])){
  86. Log::create($value);
  87. }else{
  88. Log::where('id','=',$value['id'])->update($value);
  89. }
  90. }
  91. foreach($data[4] as $value){
  92. if(!Project::find($value['id'])){
  93. Project::create($value);
  94. }else{
  95. Project::where('id','=',$value['id'])->update($value);
  96. }
  97. }
  98. foreach($data[5] as $value){
  99. if(!Job::find($value['id'])){
  100. Job::create($value);
  101. }else{
  102. Job::where('id','=',$value['id'])->update($value);
  103. }
  104. }
  105. foreach($data[6] as $value){
  106. if(!Table_eight::find($value['id'])){
  107. Table_eight::create($value);
  108. }else{
  109. Table_eight::where('id','=',$value['id'])->update($value);
  110. }
  111. }
  112. foreach($data[7] as $value){
  113. if(!Table_five::find($value['id'])){
  114. Table_five::create($value);
  115. }else{
  116. Table_five::where('id','=',$value['id'])->update($value);
  117. }
  118. }
  119. foreach($data[8] as $value){
  120. if(!Table_four::find($value['id'])){
  121. Table_four::create($value);
  122. }else{
  123. Table_four::where('id','=',$value['id'])->update($value);
  124. }
  125. }
  126. foreach($data[9] as $value){
  127. if(!Tablelist::find($value['id'])){
  128. Tablelist::create($value);
  129. }else{
  130. Tablelist::where('id','=',$value['id'])->update($value);
  131. }
  132. }
  133. foreach($data[10] as $value){
  134. if(!Table_name::find($value['id'])){
  135. Table_name::create($value);
  136. }else{
  137. Table_name::where('id','=',$value['id'])->update($value);
  138. }
  139. }
  140. foreach($data[11] as $value){
  141. if(!Table_nine::find($value['id'])){
  142. Table_nine::create($value);
  143. }else{
  144. Table_nine::where('id','=',$value['id'])->update($value);
  145. }
  146. }
  147. foreach($data[12] as $value){
  148. if(!Table_one::find($value['id'])){
  149. Table_one::create($value);
  150. }else{
  151. Table_one::where('id','=',$value['id'])->update($value);
  152. }
  153. }
  154. foreach($data[13] as $value){
  155. if(!Table_seven::find($value['id'])){
  156. Table_seven::create($value);
  157. }else{
  158. Table_seven::where('id','=',$value['id'])->update($value);
  159. }
  160. }
  161. foreach($data[14] as $value){
  162. if(!Table_six::find($value['id'])){
  163. Table_six::create($value);
  164. }else{
  165. Table_six::where('id','=',$value['id'])->update($value);
  166. }
  167. }
  168. foreach($data[15] as $value){
  169. if(!Table_three::find($value['id'])){
  170. Table_three::create($value);
  171. }else{
  172. Table_three::where('id','=',$value['id'])->update($value);
  173. }
  174. }
  175. foreach($data[16] as $value){
  176. if(!Table_two::find($value['id'])){
  177. Table_two::create($value);
  178. }else{
  179. Table_two::where('id','=',$value['id'])->update($value);
  180. }
  181. }
  182. foreach($data[17] as $value){
  183. if(!User::find($value['id'])){
  184. User::create($value);
  185. }else{
  186. User::where('id','=',$value['id'])->update($value);
  187. }
  188. }
  189. });
  190. return redirect('/sql');
  191. }
  192. //导出xls 下载链接
  193. public function download($id)
  194. {
  195. $header = array('Content-Type'=>'application/x-xls');
  196. $path = Data::find($id)->path;
  197. $file = storage_path('databases/'.$path.'.xls').Input::get('file');
  198. $file_name = date('YmdHis').'.xls';
  199. return response()->download($file,$file_name,$header);
  200. }
  201. // 修改文件夹权限
  202. protected static function mkFolder($path)
  203. {
  204. if (!is_readable($path)) {
  205. mkdir($path, 0777, true);
  206. }
  207. }
  208. }