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公用函数列表[正则]
Feb 22 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
Jul 14 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 PHP
php实现图片缩放功能类
Dec 18 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
php字符串函数学习之strstr()
Mar 27 PHP
合格的PHP程序员必备技能
Nov 13 PHP
PHP利用imagick生成组合缩略图
Feb 19 PHP
PHP文件上传处理案例分析
Oct 15 PHP
php array_multisort 对数组进行排序详解及实例代码
Oct 27 PHP
phpstudy隐藏index.php的方法
Sep 21 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
笑谈配置,使用Smarty技术
2007/01/04 PHP
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
Python下的subprocess模块的入门指引
2015/04/16 Python
wxPython实现文本框基础组件
2019/11/18 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
德国自行车商店:Tretwerk
2019/06/21 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
网络技术支持面试题
2013/04/22 面试题
汽车专业毕业生自荐信
2013/11/03 职场文书
广告学毕业生求职信
2014/01/30 职场文书
大学生活动策划方案
2014/02/10 职场文书
2014学年自我鉴定
2014/02/23 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python
Python超详细分步解析随机漫步
2022/03/17 Python