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里面的抽象类
Jan 28 PHP
php去掉字符串的最后一个字符附substr()的用法
Mar 23 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
php实现的简单检验登陆类
Jun 18 PHP
php将html转成wml的WAP标记语言实例
Jul 08 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
Jul 21 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
详解php中反射的应用
Mar 15 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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
DC动漫人物排行
2020/03/03 欧美动漫
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
javascript的函数
2007/01/31 Javascript
测试你的JS的掌握程度的代码
2009/12/09 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
Python字符串切片操作知识详解
2016/03/28 Python
Python交互环境下实现输入代码
2018/06/22 Python
Python 中字符串拼接的多种方法
2018/07/30 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
python 消费 kafka 数据教程
2019/12/21 Python
Python文件操作方法详解
2020/02/09 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
美国轮胎网站:Priority Tire
2018/11/28 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
挂职思想汇报
2013/12/31 职场文书
协议书格式
2014/04/23 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
学校党委副书记个人对照检查材料思想汇报
2014/09/28 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
市场营销计划书范文
2015/01/16 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python
详解OpenCV曝光融合
2022/04/29 Python