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 str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
PHP迅雷、快车、旋风下载专用链转换代码
Jun 15 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
PHP7.0版本备注
Jul 23 PHP
一个完整的php文件上传类实例讲解
Oct 27 PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
php的laravel框架快速集成微信登录的方法
Dec 12 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 PHP
数据结构之利用PHP实现二分搜索树
Oct 25 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
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
jquery cookie插件代码类
2009/05/26 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
JS中数组重排序方法
2016/11/11 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
python单链表实现代码实例
2013/11/21 Python
Python迭代用法实例教程
2014/09/08 Python
Python封装shell命令实例分析
2015/05/05 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
酒店管理自荐信
2013/10/23 职场文书
电子商务专业个人的自我评价
2013/11/19 职场文书
网络教育自我鉴定
2014/02/04 职场文书
化妆品促销方案
2014/02/24 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server