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 相关文章推荐
模板引擎Smarty深入浅出介绍
Dec 06 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
Jun 25 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
PHP中比较时间大小实例
Aug 21 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
TP5框架安全机制实例分析
Apr 05 PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 PHP
PHP中->和=>的意思
Mar 31 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
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
session 加入redis的实现代码
2016/07/15 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
js中日期的加减法
2015/05/06 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
简单介绍Python中的几种数据类型
2016/01/02 Python
Python 多线程Threading初学教程
2017/08/22 Python
Python for循环生成列表的实例
2018/06/15 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
Python jieba库用法及实例解析
2019/11/04 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
幼儿园教学随笔感言
2014/02/23 职场文书
公司门卫岗位职责
2014/03/15 职场文书
合作经营协议书范本
2014/04/17 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
大四学生个人总结
2015/02/15 职场文书