Laravel 5框架学习之数据库迁移(Migrations)


Posted in PHP onApril 08, 2015

database migrations 是laravel最强大的功能之一。数据库迁移可以理解为数据库的版本控制器。

在 database/migrations 目录中包含两个迁移文件,一个建立用户表,一个用于用户密码重置。

在迁移文件中,up 方法用于创建数据表,down方法用于回滚,也就是删除数据表。

执行数据库迁移

php artisan migrate

#输出

Migration table created successfully.

Migrated: 2014_10_12_000000_create_users_table

Migrated: 2014_10_12_100000_create_password_resets_table

查看mysql数据库,可以看到产生了三张表。 migratoins 表是迁移记录表,users 和 pasword_resets。

如果设计有问题,执行数据库回滚

php artisan migrate:rollback

#输出

Rolled back: 2014_10_12_100000_create_password_resets_table

Rolled back: 2014_10_12_000000_create_users_table

再次查看mysql数据库,就剩下 migrations 表了, users password_resets 被删除了。

修改迁移文件,再次执行迁移。

新建迁移

php artisan make:migration create_article_table --create='articles'

#输出

Created Migration: 2015_03_28_050138_create_article_table

在 database/migrations 下生成了新的文件。

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateArticleTable extends Migration {

 /**
 * Run the migrations.
 *
 * @return void
 */
 public function up()
 {
 Schema::create('articles', function(Blueprint $table)
 {
  $table->increments('id');
  $table->timestamps();
 });
 }

 /**
 * Reverse the migrations.
 *
 * @return void
 */
 public function down()
 {
 Schema::drop('articles');
 }

}

自动添加了 id列,自动增长,timestamps() 会自动产生 created_at 和 updated_at 两个时间列。我们添加一些字段:

public function up()
 {
 Schema::create('articles', function(Blueprint $table)
 {
  $table->increments('id');
      $table->string('title');
      $table->text('body');
      $table->timestamp('published_at');
  $table->timestamps();
 });
 }

执行迁移:

php artisan migrate

现在有了新的数据表了。

假设我们需要添加一个新的字段,你可以回滚,然后修改迁移文件,再次执行迁移,或者可以直接新建一个迁移文件

php artisan make:migration add_excerpt_to_articels_table

查看新产生的迁移文件

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddExcerptToArticelsTable extends Migration {

 /**
 * Run the migrations.
 *
 * @return void
 */
 public function up()
 {
 //
 }

 /**
 * Reverse the migrations.
 *
 * @return void
 */
 public function down()
 {
 //
 }

}

只有空的 up 和 down 方法。我们可以手工添加代码,或者我们让laravel为我们生成基础代码。删除这个文件,重新生成迁移文件,注意添加参数:

php artisan make:migration add_excerpt_to_articels_table --table='articles'

现在,up 方法里面有了初始代码。

public function up()
 {
 Schema::table('articles', function(Blueprint $table)
 {
  //
 });
 }

添加实际的数据修改代码:

public function up()
 {
 Schema::table('articles', function(Blueprint $table)
 {
  $table->text('excerpt')->nullable();
 });
 }
 
 public function down()
 {
 Schema::table('articles', function(Blueprint $table)
 {
  $table->dropColumn('excerpt');
 });
 }

nullable() 表示字段也可以为空。

再次执行迁移并检查数据库。

如果我们为了好玩,执行回滚

php artisan migrate:rollback

excerpt 列没有了。

以上所述就是本文的全部内容了,希望能够给大家熟练掌握Laravel5框架有所帮助。

PHP 相关文章推荐
PHP脚本的10个技巧(5)
Oct 09 PHP
利用static实现表格的颜色隔行显示
Oct 09 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
PHP获取客户端及服务器端IP的封装类
Jul 21 PHP
验证坐标在某坐标区域内php代码
Oct 08 PHP
PHP中常用的魔术方法
Apr 28 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
php和redis实现秒杀活动的流程
Jul 17 PHP
Laravel 5框架学习之环境与配置
Apr 08 #PHP
Laravel 5框架学习之Blade 简介
Apr 08 #PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 #PHP
Laravel 5框架学习之向视图传送数据
Apr 08 #PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 #PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 #PHP
php生成圆角图片的方法
Apr 07 #PHP
You might like
一个程序下载的管理程序(三)
2006/10/09 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
js删除数组元素、清空数组的简单方法(必看)
2016/07/27 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
Python脚本实现网卡流量监控
2015/02/14 Python
Python中的一些陷阱与技巧小结
2015/07/10 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
python redis 删除key脚本的实例
2019/02/19 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
python反转列表的三种方式解析
2019/11/08 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
请解释在new与override的区别
2012/10/29 面试题
毕业生求职简历的自我评价
2013/10/23 职场文书
运动会表扬稿大全
2014/01/16 职场文书
酒店销售经理岗位职责
2014/01/31 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
开业庆典主持词
2014/03/21 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python