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