## 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的初步认识,如果你是小白我想临时够用了,继续上路吧,如遇任何问题,请在文章下留言
下面是相关文档,需要深入的同学可阅: