首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

增删字段

使用迁移功能增删数据库表的字段,与之前讲的创建迁移文件相同, 首先创建一个迁移文件,使用以下脚手架指令:

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语句追加字段的语法:

ALTERTABLEcontactsADDlast_namevarchar(40)NOTNULLAFTERcontact_id;

laravel的迁移指令也允许我们指定某个追加的字段位于某个列之后:

$table->boolean('enabled')->after('name');

迁移状态

查看当前数据库的迁移状态,会让我们查看创建的迁移文件中哪些被应用了, 哪些还没有被应用,这样在数据库表比较多的情况下,可以有效地排查问题。

laravel提供了脚手架命令:

php artisan migrate:status

输出内容类似下图:

还有两个高危指令,一个是magrate:reset回滚所有的迁移,不同于migrate:rollback仅回滚某一批次的迁移;还有一个是migrate:refresh,如果你修改了某些迁移过的文件,这个指令会刷新所有修改的变更并应用。

这两个都要慎用!

写在最后

本文是对上一章所述laravel数据库迁移功能的补充。数据库迁移是一个比较大的动作, 特别是已经上线生产的应用数据库,如果非到更新迁移的地步不可,需要预期做好演练, 以应对可能的突发事故。

Happy coding :-)

我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200929A038OE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券