Laravel migrate 数据迁移 三板斧

## Laravel migrate 存在的意义? 为啥要用它?

为保证研发过程中的数据库结构统一。

保证在多人协作的开发环境下,本机库,测试服务器数据库。

正式服务期数据库的结构,必要数据的一致性,项目采用Laravel 的Migrate 机制来存留数据库变更的记录。


## 如何创建一个新表?

实战创建一个文章表 article ,命令行切换到站点根目录下 执行如下命令:


php artisan make:migration create_articles_table --create=articles


注意后面的参数  里 表名后面要加上 s ,articles ,为啥这么写?后面会Model 部分会提到。

这样就成功创建了一个migrate文件,注意查看

在站点根目录下/database/migrations/是否多了一个文件

2018_09_20_113654_create_articles_table.php

文件名前面的日期,是你创建的时候的日期

打开,并编辑,找up() 方法,添加如下字段 (Laravel 有哪些可以字段呢,设置字段的规则有哪些?

Schema::create('articles', function (Blueprint $table) {
      $table->increments('id');
      $table->string('title');
      $table->text('content');
      $table->timestamps();
});

设置好字段执行 php artisan migrate

就生成了一个新表articles

## 如何为已创建的表新增,修改,删除字段?

php artisan make:migration modify_articles --table=articles

新增就直接添加就可以了,跟创建一样;

$table->string('intro');

删除字段,可以删除单个,也可以删除多个区别如下:

--删除单个字段

$table->dropColumn('intro');

--支持删除多个

$table->dropColumn([’title’,’intro']);

修改字段:

需要先执行 安装 doctrine/dbal 依赖

composer require doctrine/dbal

--修改字段长度为50

$table->string('name', 50)->change();

--修改字段为null

$table->string('name', 50)->nullable()->change();

--字段改名

$table->renameColumn('name', 'username');

设置完了也是需要 到站点根目录下 执行一次 php artisan migrate 让调整生效

## 如何撤销最近的一次数据库操作?

注意:如需要使用此功能,要在up()方法下面的 down() 方法里做相反的操作

实战:

需求:给article表里添加一个字段 abc ,删除一个字段 title ,注意up() 方法和 down() 方法,是互逆的操作

    
    public function up()
    {
        Schema::table('articles', function (Blueprint $table) {
            
            $table->string('abc');

            $table->dropColumn('title');

        });
    }

    public function down()
    {
        $table->dropColumn('abc');

        $table->string('title');
    }

在站点根目录 先执行  php artisan migrate 查看数据表articles 是否多了一个abc少了个title

然后,再执行  php artisan migrate:rollback 看看是否回滚了上次操作

这里只是对migrate的初步认识,如果你是小白我想临时够用了,继续上路吧,如遇任何问题,请在文章下留言

下面是相关文档,需要深入的同学可阅:

参考文档:https://laravelacademy.org/post/8179.html