方便团队合作的 Laravel Migration

318 阅读1分钟

转自SDK社区:sdk.cn

需求 在数据库建表来存储文章信息,表名为:topics。

最简单的做法,直接通过MySQL客户端建表,如果后期有修改,也直接通过MySQL客户端来修改。

问题 如果是小型应用或者个人项目,通过MySQL客户端建表的方式能够快速满足需求,但是对于大型项目,可能存在以下问题:

如何把数据库的每一次变动都记录下来? 如何在团队间传递数据库的变动? 如何在不同的运行环境之间同步数据库的变动,比如从开发环境到生产环境? 关于 Laravel Migration Laravel Migration巧妙的解决了上述问题,它就像是对数据库进行的版本控制,让你的团队能够轻松地去定义和共享程序的数据库结构。 Laravel Migration通常配合 Laravel 的结构生成器,可以轻松生成应用程序的数据库结构。

创建表

% php artisan make:migration create_topics_table Created Migration: 2020_10_19_094104_create_topics_table

打开database/migrations下新增的数据库迁移文件,补充数据库的结构,最终如下:

`<?php

use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema;

class CreateTopicsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('topics', function (Blueprint table) { table->id(); $table->timestamps(); }); }

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('topics');
}

}`

执行迁移 php artisan migrate 复杂一些的情况 `// 创建分类 Category::factory()->times(10)->create()->each(function (category) { category->datas()->saveMany( // 每个分类下创建服务 Data::factory()->times(mt_rand(1, 20))->create()->each(function (data) { data->apis()->saveMany( // 每个服务下创建API DataApi::factory()->times(mt_rand(1, 20))->create() );

        $data->errorCodes()->saveMany(
            // 每个服务下创建错误码
            DataErrorCode::factory()->times(mt_rand(1, 20))->create()
        );
    })
);

});`