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 相关文章推荐
模板引擎Smarty深入浅出介绍
Dec 06 PHP
PHP 网络开发详解之远程文件包含漏洞
Apr 25 PHP
如何用C语言编写PHP扩展的详解
Jun 13 PHP
浅析php header 跳转
Jun 17 PHP
基于PHP创建Cookie数组的详解
Jul 03 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
php实现无限级分类(递归方法)
Aug 06 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
Oct 26 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
laravel 配置路由 api和web定义的路由的区别详解
Sep 03 PHP
laravel入门知识点整理
Sep 15 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 smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
js实现图片轮播效果
2015/12/19 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
关于uniApp editor微信滑动问题
2021/01/15 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
python下载文件时显示下载进度的方法
2015/04/02 Python
Python ftp上传文件
2016/02/13 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
Python中base64与xml取值结合问题
2019/12/22 Python
Python爬虫爬取杭州24时温度并展示操作示例
2020/03/27 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
同事吵架检讨书
2014/02/05 职场文书
工作态度检讨书
2014/02/11 职场文书
合伙经营协议书范本
2014/04/18 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
出差报告怎么写
2014/11/06 职场文书
怎样写观后感
2015/06/19 职场文书
新闻稿格式范文
2015/07/18 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
python中 Flask Web 表单的使用方法
2022/05/20 Python