引言php
使用laravel的数据库迁移功能进行表的建立,和迁移回滚以后,咱们继续说说在设计中 表结构的更改以后的处理。以及如何为数据库填充一些伪数据做为测试。laravel
数据约束程序员
上一章说到数据库迁移回滚,能够手动控制回滚到哪一批次的迁移位置。好比咱们建立的 events 表, 若是在迁移文件内添加字段,代码以下:数据库
咱们在数据库表中间的位置添加了一个 venue 字段。而后使用迁移指令编程
php artisan migrate
就能够应用这些改变了。微信
不少时候,并非说咱们建立了表,而且指定了字段名,和字段数据类型就算完事儿了。咱们须要空与非空约束,默认值约束,主键约束,外键约束等等数据库所具备的特性, 这才是关系型数据库的魅力。app
好比声明一个布尔类型的值,并声明默认为false:测试
$table - > boolean ( 'confirmed' ) - > default ( false ) ;
好比设定一个字符串类型的字段,容许为null:spa
$table - > string ( 'comments' ) - > nullable ( ) ;
好比设定整型为无符号数:.net
$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 :-)
我是@程序员小助手,专一编程知识,圈子动态的IT领域原创做者
本文分享自微信公众号 - 程序员小助手(mql45ea)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。