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 curl参数的详解
Jun 17 PHP
php 地区分类排序算法
Jul 01 PHP
PHP中的str_repeat函数在JavaScript中的实现
Sep 16 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
简单概括PHP的字符串中单引号与双引号的区别
May 07 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 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中替换换行符的几种方法小结
2012/10/15 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
javascript动态加载三
2012/08/22 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
python生成随机mac地址的方法
2015/03/16 Python
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python读取二进制mnist实例详解
2017/05/31 Python
python多任务之协程的使用详解
2019/08/26 Python
python实现微信打飞机游戏
2020/03/24 Python
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
怎样有效的进行自我评价
2013/10/06 职场文书
应聘护士自荐信
2013/10/21 职场文书
电子信息毕业生自荐信
2013/11/16 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
2015年教师节主持词
2015/07/03 职场文书
小学毕业感言100字
2015/07/30 职场文书