diff --git a/app/Http/Controllers/Admin/EntityController.php b/app/Http/Controllers/Admin/EntityController.php index 52b63e7199446cf2bf83feb9bf71c54ec7d0c249..a44c06152e377a16bc3896201482f578dc561fa1 100644 --- a/app/Http/Controllers/Admin/EntityController.php +++ b/app/Http/Controllers/Admin/EntityController.php @@ -73,7 +73,8 @@ class EntityController extends Controller public function save(EntityRequest $request) { try { - EntityRepository::add($request->only($this->formNames)); + $createDB = $request->post('is_modify_db', false); + EntityRepository::add($request->only($this->formNames), $createDB); return [ 'code' => 0, 'msg' => '新增成功', diff --git a/app/Http/Controllers/Admin/EntityFieldController.php b/app/Http/Controllers/Admin/EntityFieldController.php index a97e086ea9dc45eac6f366ad7a51b3e902eb8ecc..eae601bf55e9d438453df641881637af1bc51a82 100644 --- a/app/Http/Controllers/Admin/EntityFieldController.php +++ b/app/Http/Controllers/Admin/EntityFieldController.php @@ -25,7 +25,7 @@ class EntityFieldController extends Controller protected $formNames = [ 'name', 'type', 'comment', 'form_name', 'form_type', 'is_show', 'is_edit', 'is_required', 'form_comment', 'entity_id', 'field_length', 'field_total', 'field_scale', 'order', 'form_params', - 'default_value', 'is_show_inline', 'is_modify_db' + 'default_value', 'is_show_inline' ]; public function __construct() @@ -108,7 +108,8 @@ class EntityFieldController extends Controller ]; } - if (isset($data['is_modify_db'])) { + $modifyDB = $request->post('is_modify_db', false); + if ($modifyDB) { Schema::table($table->table_name, function (Blueprint $table) use ($data) { $m = $data['type']; $length = intval($data['field_length']); @@ -138,7 +139,7 @@ class EntityFieldController extends Controller }); } - unset($data['field_length'], $data['field_total'], $data['field_scale'], $data['is_modify_db']); + unset($data['field_length'], $data['field_total'], $data['field_scale']); EntityFieldRepository::add($data); return [ diff --git a/app/Repository/Admin/EntityRepository.php b/app/Repository/Admin/EntityRepository.php index 33df35c075e25ee88ee8df04f6fc099e766fd0b8..448e54d6177b393197e65e8620f81c174b756543 100644 --- a/app/Repository/Admin/EntityRepository.php +++ b/app/Repository/Admin/EntityRepository.php @@ -43,11 +43,20 @@ class EntityRepository /** * 新增模型 + * + * @param array $data + * @param mixed $createDB + * @throws CreateTableException|\Exception + * @return Entity */ - public static function add($data) + public static function add($data, $createDB = true) { $entity = Entity::query()->create($data); try { + if (!$createDB) { + return $entity; + } + if (Schema::hasTable($data['table_name'])) { throw new \RuntimeException("数据库表已存在"); } diff --git a/resources/views/admin/entity/add.blade.php b/resources/views/admin/entity/add.blade.php index 7f0a22b71e5e16170058d1e49bfbbe0dd3902920..bf539c88a44818270093c2db53098dfdce5f9cff 100644 --- a/resources/views/admin/entity/add.blade.php +++ b/resources/views/admin/entity/add.blade.php @@ -20,6 +20,15 @@ table_name) disabled @endisset> + @if(!isset($id)) +
+ +
+ +
+
某些情况下可能数据库表已经通过其它方式建好,此处无需新建数据库表,添加模型主要是方便利用框架提供的模型增删改查功能
+
+ @endif
diff --git a/resources/views/admin/entityField/add.blade.php b/resources/views/admin/entityField/add.blade.php index cc32d8427bce45d8122f2f62aa6ccef7a3c9d59c..92d41ce45a92dc7624115bafa1c9378a6d5fa5e1 100644 --- a/resources/views/admin/entityField/add.blade.php +++ b/resources/views/admin/entityField/add.blade.php @@ -55,6 +55,7 @@
+ @if(!isset($id))
@@ -62,6 +63,7 @@
某些情况下可能数据库表结构已经通过其它方式建好,此处无需操作数据库表,添加字段主要是方便利用框架提供的模型增删改查功能
+ @endif
diff --git a/tests/Feature/Admin/EntityControllerTest.php b/tests/Feature/Admin/EntityControllerTest.php index d702d03a705eac24ad010c1fe7aefb956005c0b0..8e7e7e4c1fe3a29d3b26afff03232bf867ced93f 100644 --- a/tests/Feature/Admin/EntityControllerTest.php +++ b/tests/Feature/Admin/EntityControllerTest.php @@ -35,7 +35,7 @@ class EntityControllerTest extends TestCase public function testEntityCanBeCreated() { - $data = ['name' => '测试', 'table_name' => 'tests']; + $data = ['name' => '测试', 'table_name' => 'tests', 'is_modify_db' => 1]; $response = $this->actingAs($this->user, 'admin') ->post('/admin/entities', $data); $response->assertJson(['code' => 0]); @@ -47,7 +47,7 @@ class EntityControllerTest extends TestCase public function testEntityBeCreatedWhenTableHasExists() { - $data = ['name' => '测试', 'table_name' => 'tests']; + $data = ['name' => '测试', 'table_name' => 'tests', 'is_modify_db' => 1]; Schema::create($data['table_name'], function (Blueprint $table) { $table->increments('id'); $table->timestamps();