数据约束
上一章说到数据库迁移回滚,可以手动掌握回滚到哪一批次的迁移位置。比如我们创建的 events 表, 如果在迁移文件内添加字段,代码如下:
我们在数据库表中间的位置添加了一个 venue 字段。然后利用迁移指令
php artisan migrate
就可以运用这些改变了。

很多时候,并不是说我们创建了表,并且指定了字段名,和字段数据类型就算完事儿了。 我们须要空与非空约束,默认值约束,主键约束,外键约束等等数据库所具有的特性, 这才是关系型数据库的魅力。
比如声明一个布尔类型的值,并声明默认为false:
$table->boolean('confirmed')->default(false);
比如设定一个字符串类型的字段,许可为null:
$table->string('comments')->nullable();
比如设定整型为无符号数:
$table->tinyInteger('age')->unsigned();
在给上面的 age 字段设定默认值:
$table->tinyInteger('age')->unsigned()->default(0);
增删字段
利用迁移功能增删数据库表的字段,与之前讲的创建迁移文件相同, 首先创建一个迁移文件,利用以下脚手架指令:
php artisan make:migration add_enabled_to_events_table --table=events
本迁移文件我们要为表 events 添加一个 enabled 的布尔类型的字段。上述指令输出内容如下:
Created Migration: 2020_09_28_213116_add_enabled_to_events_table
现在为该迁移文件添加 up & down 方法,指定迁移开始和回滚所要实行的动作, 我们仅仅是添加一个字段,或者在回滚的时候,删除一个字段,代码如下图:
完成后在命令行实行迁移指令:
php artisan migrate
输出结果如下:
Migrating: 2020_09_28_213116_add_enabled_to_events_tableMigrated: 2020_09_28_213116_add_enabled_to_events_table
上面我们并没有指定添加的字段在哪个字段的后面,以是laravel所组装的SQL就默认是末了一个字段之后。 大家该当不陌生SQL语句追加字段的语法:
ALTER TABLE contacts ADD last_name varchar(40) NOT NULL AFTER contact_id;
laravel的迁移指令大概可我们指定某个追加的字段位于某个列之后:
$table->boolean('enabled')->after('name');
迁移状态
查看当前数据库的迁移状态,会让我们查看创建的迁移文件中哪些被运用了, 哪些还没有被运用,这样在数据库表比较多的情形下,可以有效地排查问题。
laravel供应了脚手架命令:
php artisan migrate:status
输出内容类似下图:
还有两个高危指令,一个是 magrate:reset 回滚所有的迁移,不同于 migrate:rollback 仅回滚某一批次的迁移; 还有一个是 migrate:refresh,如果你修正了某些迁移过的文件,这个指令会刷新所有修正的变更并运用。
这两个都要慎用!
本文是对上一章所述laravel数据库迁移功能的补充。数据库迁移是一个比较大的动作, 特殊是已经上线生产的运用数据库,如果非到更新迁移的地步不可,须要预期做好演习训练, 以应对可能的突发事件。
Happy coding :-)
我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者