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安全配置详细说明
Sep 26 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
Jul 20 PHP
php全排列递归算法代码
Oct 09 PHP
php下载excel无法打开的解决方法
Dec 24 PHP
php通过array_merge()函数合并关联和非关联数组的方法
Mar 18 PHP
php实现的美国50个州选择列表实例
Apr 20 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
php实例化一个类的具体方法
Sep 19 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
解析dedeCMS验证码的实现代码
2013/06/07 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
浅谈js的异步执行
2016/10/18 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
python第三方库学习笔记
2020/02/07 Python
Python中logger日志模块详解
2020/08/04 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
基于django和dropzone.js实现上传文件
2020/11/24 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
物流司机岗位职责
2013/12/28 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
企业办公室岗位职责
2014/03/12 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
《长征》教学反思
2014/04/27 职场文书
本科毕业论文致谢怎么写
2015/05/14 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
Python入门学习之类的相关知识总结
2021/05/25 Python