Laravel 5.2数据库--迁移migration
Laravel中的migrations文件存放的是数据库表文件等结构,可以说是一个跟git差不多的,可以说像是数据库的版本控制器,所以可以叫做迁移。因为它可以很快速的很容易地构建应用的数据库表结构。
- 生成迁移
使用 Artisan 命令make:migration
来创建一个新的迁移:
- php artisan make:migration create_users_table
就会在database/migrations
目录下生成新的迁移文件,而已名称都是包含时间戳,因此预先laravel判断其顺序。
2.迁移文件的目录结构
里面包含了两个方法:up
和down
。up
方法用于新增表,列或者索引到数据库,而down
方法就是up
方法的反操作,和up
里的操作相反。
- <?php
- use Illuminate\Database\Schema\Blueprint;
- use Illuminate\Database\Migrations\Migration;
- class CreateFlightsTable extends Migration{
- /**
- * 运行迁移
- *
- * @return void
- */
- public function up()
- {
- Schema::create('flights', function (Blueprint $table) {
- $table->increments('id');
- $table->string('name');
- $table->string('airline');
- $table->timestamps();
- });
- }
- /**
- * 撤销迁移
- *
- * @return void
- */
- public function down()
- {
- Schema::drop('flights');
- }
- }
3.进行文件迁移
- php artisan migrate
4、迁移回滚
想要回滚最新的一次迁移”操作“,可以使用rollback
命令,注意这将会回滚最后一批运行的迁移,可能包含多个迁移文件:
- php artisan migrate:rollback
migrate:reset
命令将会回滚所有的应用迁移:
- php artisan migrate:reset
migrate:refresh
命令将会先回滚所有数据库迁移,然后运行migrate
命令。这个命令可以有效的重建整个数据库:
- php artisan migrate:refresh
php artisan migrate:refresh --seed
在up方法里面创建列的时候,发现想要用varchar字符类型找不到,原来laravel的varchar类型变成了string()方法了,在用的时候:
- $table->string('name', 100); //等同于数据库中的 VARCHAR,带一个长度
二、创建索引
1、一般可用索引类型有:主键索引、混合索引、唯一索引、自定义索引名称、普通索引。
命令 | 描述 |
$table->primary('id'); | 添加主键索引 |
$table->primary(['first', 'last']); | 添加混合索引 |
$table->unique('email'); | 添加唯一索引 |
$table->unique('state', 'my_index_name'); | 指定自定义索引名称 |
$table->index('state'); | 添加普通索引 |
命令 | 描述 |
$table->dropPrimary('users_id_primary'); | 从 “users”表中删除主键索引 |
$table->dropUnique('users_email_unique'); | 从 “users”表中删除唯一索引 |
$table->dropIndex('geo_state_index'); | 从 “geo”表中删除普通索引 |
出错误问题:
[Symfony\Component\Debug\Exception\FatalThrowableError]
Call to a member function comment() on null
出现这个问题的原因是我在添加列$table->timestamps();时间戳的时候,后面链式调用了注释方法$table->timestamps()->comment('时间');
这是由于$table->timestamps();这个timestamps()方法里面是没有return $this; 的结果导致的。
Laravel 5.2数据库--迁移migration的更多相关文章
- Laravel 5.2 数据库迁移和数据填充
一.数据库迁移 Laravel 的数据库迁移提供了对数据库.表.字段.索引的一系列相关操作.下面以创建友情链接表为例. 1. 创建迁移 使用 Artisan 命令 php artisan make: ...
- laravel中的数据库迁移
1.创建数据库迁移文件:生成数据库迁移文件,前面跟着时间戳: php artisan make:migration create_posts_table 创建数据库迁移文件:可以重命名数据表名: -- ...
- Laravel 6.X 数据库迁移 创建表 与 修改表
数据库迁移创建表 本篇文章中使用的是mysql数据库,其他数据库需要修改env文件和app配置,请其他地方搜索一下就会找到. 创建示例 1.创建users表: 命令行键入 php artisan ma ...
- [.Net]使用ABP 数据库迁移migration遇到的坑及解决方案
问题:在使用Update-Database时,突然出现"数据库中已存在名为 'XXX' 的对象". 检查发现__EFMigrationsHistory表中的MigrationI ...
- EF Code First 数据库迁移Migration剖析
1.简介 Entity Framework 的Code First 方式,提供了一种方式:编写模型Model,生成模型变更,根据模型变更修改数据库. 而其所以来的环境就是强大的Nuget,如果还在是V ...
- Laravel 5.4 数据库迁移一次之后就不起作用!
https://segmentfault.com/q/1010000010806351 我在命令行中生成了一个新的迁移脚本: 当我执行命令:php artisan migrate 时 显示迁移成功,并 ...
- 开发环境---->服务器(数据库迁移Migration)
1.查找服务器环境迁移记录表的最近一次迁移名称 SELECT * FROM __efmigrationshistory; 最后一次:20190225075007_UpdateSocialApplyCo ...
- laravel数据库迁移(三)
laravel号称世界上最好的框架,数据库迁移算上一个,在这里先简单入个门: laravel很强大,它把表中的操作写成了migrations迁移文件,然后可以直接通过迁移文件来操作表.所以 , 数据迁 ...
- Laravel学习笔记(四)数据库 数据库迁移案例
创建迁移 首先,让我们创建一个MySql数据库“Laravel_db”.接下来打开app/config目录下的database.php文件.请确保default键值是mysql: return arr ...
随机推荐
- 最棒的 JavaScript 学习指南(2018版)
译者注:原文作者研究了近2.4万篇 JavaScript 文章得出这篇总结,全文包含学习指南.新人上手.Webpack.性能.基础概念.函数式编程.面试.教程案例.Async Await.并发.V8. ...
- 【python小练】图片爬虫之BeautifulSoup4
Python3用不了Scrapy! Python3用不了Scrapy! Python3用不了Scrapy! [重要的事情说三遍,据说大神们还在尝试把scrapy移植到python3,特么浪费我半个小时 ...
- 【全文转载】Gradle、Maven项目相互转换
Doublemine 首页 标签 归档 关于 搜索 Gradle.Maven项目相互转换 发表于 2017-08-21 | 更新于: 2018-03-18 | 阅读次数: 920 字数统计 ...
- Kaldi的nnet3
Nnet3配置中的上下文和块大小 简介 本页讨论了nnet3配置中关于解码和训练的块大小以及左右上下文的某些术语.这将有助于理解一些脚本.目前,从脚本角度来看,没有任何关于nnet3的"概述 ...
- redis集群学习
转载: http://arganzheng.life/redis-cluster.html Redis3.0版本加入了cluster功能,解决了Redis单点无法横向扩展的问题. 分布式系统要解决的不 ...
- Java基础_0304:构造方法
构造方法 如果要实例化新的对象,那么肯定需要使用关键字new来完成,但是除了new这个关键字之外,还有可能在对象实例化时为其进行一些初始化的准备操作,这个时候就需要构造方法的支持了 构造方法本身是一种 ...
- Python Django CBV下的通用视图函数
ListView TemplateView DetailView 之前的代码实例基本上都是基于FBV的模式来撰写的,好处么,当然就是简单粗暴..正如: def index(request): retu ...
- 【blog】SpringMVC接收数组
页面 var idsArray = new Array(); idsArray.push(userId); SpringMVC @RequestParam(value = "ids[]&qu ...
- 《jQuery精品教程视频》视频目录
\day01\03-视频\02-使用js的缺点.avi; \day01\03-视频\03-jQuery初体验.avi; \day01\03-视频\04-什么是jQuery.avi; \day01\03 ...
- Git命令执行漏洞
Git命令造成的反弹shell 漏洞描述: Git LFS可以.lfsconfig使用LFS由存储库中的文件配置(部分),并且可以将Git LFS指向ssh://. [lfs] url = ssh:/ ...