bitsnio / json-to-migration-laravel
将JSON模式转换为Laravel迁移。
v2.0.1
2024-05-03 09:49 UTC
Requires (Dev)
- orchestra/testbench: ^6.0
README
简单地创建一个包含数据库模式的 .json 文件,然后运行 artisan 命令 json:migrate Template.json 以创建项目中所有迁移。
注意:此包旨在用于启动Laravel项目,而不是用于已构建的项目。
安装
您可以通过运行以下composer命令来安装此包
composer require --dev bitsnio/json-to-migration-laravel
创建JSON模板
在项目的根目录中创建一个 Template.json 文件,并使用以下模板
{
"posts": {
"name" : "string:50|index:50",
"state" : "enum:active,inactive|default:active",
"text" : "text",
"slug" : "string:50|unique",
"active" : "boolean|default:false",
"user_id": "foreign|nullable|constrained|onDelete"
},
"categories": {
"name" : "string",
"image": "string"
},
"subcategories": {
"name" : "string",
"category_id": "foreign|constrained"
}
}
JSON的主要键代表表名。请确保按照顺序创建它们,以防一个表与其他表有关系。在这种情况下,posts、categories 和 subcategories 是我们的表。
接下来,对于每个表,将您的列定义为键(例如,这里的 name、state、text 等),并设置它们的属性。
属性
属性由竖线 (|) 分隔,第一个属性始终是列类型。该包支持Laravel中的所有列类型。
可以使用冒号 (:) 后跟选项值来提供附加选项(例如,字符串长度)。可以提供多个选项(例如,对于 float)。
迁移
使用以下方式运行
php artisan json:migrate schema.json
上述模式将创建三个不同的迁移。posts 模式将如下所示
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string("name", 50)->index(); $table->enum("state", ['active', 'inactive'])->default('active'); $table->text("text"); $table->string("slug", 50)->unique(); $table->boolean("active")->default(false); $table->foreignId("user_id")->nullable(true)->constrained()->onDelete('cascade'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('posts'); } }