提交 b0e2b739 编写于 作者: 孙建华

add: 新增模型时可选择是否新建数据库表

上级 d12b15d5
...@@ -73,7 +73,8 @@ class EntityController extends Controller ...@@ -73,7 +73,8 @@ class EntityController extends Controller
public function save(EntityRequest $request) public function save(EntityRequest $request)
{ {
try { try {
EntityRepository::add($request->only($this->formNames)); $createDB = $request->post('is_modify_db', false);
EntityRepository::add($request->only($this->formNames), $createDB);
return [ return [
'code' => 0, 'code' => 0,
'msg' => '新增成功', 'msg' => '新增成功',
......
...@@ -25,7 +25,7 @@ class EntityFieldController extends Controller ...@@ -25,7 +25,7 @@ class EntityFieldController extends Controller
protected $formNames = [ protected $formNames = [
'name', 'type', 'comment', 'form_name', 'form_type', 'is_show', 'is_edit', 'is_required', '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', '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() public function __construct()
...@@ -108,7 +108,8 @@ class EntityFieldController extends Controller ...@@ -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) { Schema::table($table->table_name, function (Blueprint $table) use ($data) {
$m = $data['type']; $m = $data['type'];
$length = intval($data['field_length']); $length = intval($data['field_length']);
...@@ -138,7 +139,7 @@ class EntityFieldController extends Controller ...@@ -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); EntityFieldRepository::add($data);
return [ return [
......
...@@ -43,11 +43,20 @@ class EntityRepository ...@@ -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); $entity = Entity::query()->create($data);
try { try {
if (!$createDB) {
return $entity;
}
if (Schema::hasTable($data['table_name'])) { if (Schema::hasTable($data['table_name'])) {
throw new \RuntimeException("数据库表已存在"); throw new \RuntimeException("数据库表已存在");
} }
......
...@@ -20,6 +20,15 @@ ...@@ -20,6 +20,15 @@
<input type="text" name="table_name" required lay-verify="required" autocomplete="off" class="layui-input" value="{{ $model->table_name ?? '' }}" placeholder="模型对应的数据库表名称,保存后不能修改" @isset($model->table_name) disabled @endisset> <input type="text" name="table_name" required lay-verify="required" autocomplete="off" class="layui-input" value="{{ $model->table_name ?? '' }}" placeholder="模型对应的数据库表名称,保存后不能修改" @isset($model->table_name) disabled @endisset>
</div> </div>
</div> </div>
@if(!isset($id))
<div class="layui-form-item">
<label class="layui-form-label">新建数据库表</label>
<div class="layui-input-inline" style="width: 50px;">
<input type="checkbox" name="is_modify_db" lay-skin="switch" lay-text="是|否" value="1" checked>
</div>
<div class="layui-form-mid layui-word-aux">某些情况下可能数据库表已经通过其它方式建好此处无需新建数据库表添加模型主要是方便利用框架提供的模型增删改查功能</div>
</div>
@endif
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">描述</label> <label class="layui-form-label">描述</label>
<div class="layui-input-block"> <div class="layui-input-block">
......
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
<input type="text" name="comment" autocomplete="off" class="layui-input" value="{{ $model->comment ?? '' }}"> <input type="text" name="comment" autocomplete="off" class="layui-input" value="{{ $model->comment ?? '' }}">
</div> </div>
</div> </div>
@if(!isset($id))
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">变更表结构</label> <label class="layui-form-label">变更表结构</label>
<div class="layui-input-inline" style="width: 50px;"> <div class="layui-input-inline" style="width: 50px;">
...@@ -62,6 +63,7 @@ ...@@ -62,6 +63,7 @@
</div> </div>
<div class="layui-form-mid layui-word-aux">某些情况下可能数据库表结构已经通过其它方式建好此处无需操作数据库表添加字段主要是方便利用框架提供的模型增删改查功能</div> <div class="layui-form-mid layui-word-aux">某些情况下可能数据库表结构已经通过其它方式建好此处无需操作数据库表添加字段主要是方便利用框架提供的模型增删改查功能</div>
</div> </div>
@endif
<hr> <hr>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">表单名称</label> <label class="layui-form-label">表单名称</label>
......
...@@ -35,7 +35,7 @@ class EntityControllerTest extends TestCase ...@@ -35,7 +35,7 @@ class EntityControllerTest extends TestCase
public function testEntityCanBeCreated() public function testEntityCanBeCreated()
{ {
$data = ['name' => '测试', 'table_name' => 'tests']; $data = ['name' => '测试', 'table_name' => 'tests', 'is_modify_db' => 1];
$response = $this->actingAs($this->user, 'admin') $response = $this->actingAs($this->user, 'admin')
->post('/admin/entities', $data); ->post('/admin/entities', $data);
$response->assertJson(['code' => 0]); $response->assertJson(['code' => 0]);
...@@ -47,7 +47,7 @@ class EntityControllerTest extends TestCase ...@@ -47,7 +47,7 @@ class EntityControllerTest extends TestCase
public function testEntityBeCreatedWhenTableHasExists() 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) { Schema::create($data['table_name'], function (Blueprint $table) {
$table->increments('id'); $table->increments('id');
$table->timestamps(); $table->timestamps();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册