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 相关文章推荐
桌面中心(三)修改数据库
Oct 09 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
PHP 之Section与Cookie使用总结
Sep 14 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
优化PHP代码技巧的小结
Jun 02 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 PHP
Symfony2联合查询实现方法
Mar 18 PHP
PHP实现对二维数组某个键排序的方法
Sep 14 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP操作Redis数据库常用方法示例
Aug 25 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 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
php 函数中使用static的说明
2012/06/01 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
python查找目录下指定扩展名的文件实例
2015/04/01 Python
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
python实现感知机模型的示例
2020/09/30 Python
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
理货员的岗位职责
2013/11/23 职场文书
工商管理专业职业生涯规划
2014/01/01 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
外贸专业求职信
2014/03/09 职场文书
个人主要事迹材料
2014/08/26 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android