liaofei 2 лет назад
Родитель
Сommit
d5b15f9246
1 измененных файлов с 12 добавлено и 5 удалено
  1. 12 5
      crmeb/app/services/system/SystemCrudServices.php

+ 12 - 5
crmeb/app/services/system/SystemCrudServices.php

@@ -502,7 +502,7 @@ class SystemCrudServices extends BaseServices
 
         $data['softDelete'] = false;
 
-        $tableInfo = null;
+        //先检查表存在则
         if ($id) {
             $this->updateFromCommon($tableName, $tableComment);
             //删除数据库表
@@ -516,7 +516,9 @@ class SystemCrudServices extends BaseServices
                 throw new AdminException('表已经被生成过,请在列表中进行修改');
             }
         }
+
         //创建数据库
+        $tableCreateInfo = null;
         if ($tableField && (!$data['isTable'] || !$tableInfo)) {
             $tableCreateInfo = $this->makeDatebase($tableName, $tableComment, $tableField);
             if ($tableCreateInfo['softDelete']) {
@@ -530,6 +532,7 @@ class SystemCrudServices extends BaseServices
             throw new AdminException(500049, ['_name' => $tableName]);
         }
 
+        //读取字段
         //读取数据库字段信息
         $tableInfo = $this->getTableInfo($tableName);
 
@@ -572,7 +575,7 @@ class SystemCrudServices extends BaseServices
             $crudInfo = $this->dao->get($id);
         }
 
-        $res = $this->transaction(function () use ($crudInfo, $tableInfo, $modelName, $filePath, $tableName, $routeName, $data, $dataMenu) {
+        $res = $this->transaction(function () use ($tableCreateInfo, $crudInfo, $tableInfo, $modelName, $filePath, $tableName, $routeName, $data, $dataMenu) {
             $routeService = app()->make(SystemRouteServices::class);
             $meunService = app()->make(SystemMenusServices::class);
             //修改菜单名称
@@ -681,6 +684,12 @@ class SystemCrudServices extends BaseServices
                 $makePath[$key] = $item['path'];
             }
 
+            if ($tableCreateInfo && isset($tableCreateInfo['table']) && $tableCreateInfo['table'] instanceof Table) {
+                //创建数据库
+                $tableCreateInfo['table']->create();
+                $tableInfo = $this->getTableInfo($tableName);
+            }
+
             $crudDate = [
                 'pid' => $data['pid'],
                 'name' => $data['menuName'],
@@ -816,10 +825,8 @@ class SystemCrudServices extends BaseServices
                 $table->addIndex($item);
             }
         }
-        //执行创建
-        $table->create();
 
-        return compact('indexField', 'softDelete', 'timestamps');
+        return compact('indexField', 'softDelete', 'timestamps', 'table');
     }
 
     /**