数据库|3分钟短文:书接上回,Laravel数据库迁移的那些个小技巧

数据库|3分钟短文:书接上回,Laravel数据库迁移的那些个小技巧

文章图片

数据库|3分钟短文:书接上回,Laravel数据库迁移的那些个小技巧

文章图片


引言使用laravel的数据库迁移功能进行表的创建 , 和迁移回滚之后 , 我们继续说说在设计中 表结构的更改之后的处理 。 以及如何为数据库填充一些伪数据作为测试 。


数据约束上一章说到数据库迁移回滚 , 可以手动控制回滚到哪一批次的迁移位置 。 比如我们创建的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_table
Migrated: 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 :-)

【数据库|3分钟短文:书接上回,Laravel数据库迁移的那些个小技巧】我是@程序员小助手 , 专注编程知识 , 圈子动态的IT领域原创作者


    推荐阅读