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 ci框架验证码实例分析
Jun 26 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
Oct 08 PHP
php中get_object_vars()在数组的实例用法
Feb 22 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
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
php生成扇形比例图实例
2013/11/06 PHP
php获取字段名示例分享
2014/03/03 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
python实现的系统实用log类实例
2015/06/30 Python
python把1变成01的步骤总结
2019/02/27 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
python如何保证输入键入数字的方法
2019/08/23 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
廉价连衣裙和婚纱礼服在线销售:Tbdress
2019/02/28 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
计算机个人求职信范例
2014/01/24 职场文书
三方合作协议书范本
2014/04/18 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
结婚十年感言
2015/07/31 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript