方便团队合作的 Laravel Migration

转自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下新增的数据库迁移文件,补充数据库的结构,最终如下:

`

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()
        );
    })
);

});`

你可能感兴趣的:(云服务)