Laravel学习基础之migrate的使用教程


Posted in PHP onOctober 11, 2017

前言

大家都知道,现在的开发测试都是讲究多人团队协作完成,每个人都有本地环境,在以前我们一般是手动的添加数据,比如在数据库查询器中使用sql语句进行数据插入。如果数据较少,那还是蛮轻松的,但是如果数据过大,那就很蛋疼了,但是这在Laravel中就很轻松,可以使用数据迁移。

本文就详细的介绍了关于Laravel中migrate使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

生成迁移

命令:

Migration

php artisan make:migration create_users_table

意思:创建一个迁移,其实就是创建一张名为users的表。

接着你便能在database/migrations这个目录下找到与2014_10_12_000000_create_users_table.php这个类似的文件。
和以前用php语句创建表一样,我们可以在2014_10_12_000000_create_users_table.php这个文件中写上我们要创建表的字段及约束条件。

?table和?create选项可以用于指定表名以及该迁移是否要创建一个新的数据表。这些选项只需要简单放在上述迁移命令后面并指定表名,如果你想要指定生成迁移的自定义输出路径,在执行make:migration命令时可以使用?path选项,提供的路径应该是相对于应用根目录的。

迁移结构

一个migration类包含两个方法up和down。

up中主要包含创建表的具体内容。

down中和前者相反。

Schema::create接受两个参数。第一个是你要创建表的表名;第二个是一个闭包(匿名函数),获取用于定义新表的 Blueprint 对象。

Migration

<?php
 
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
 
class CreateUsersTable extends Migration
{
 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
  Schema::create('users', function (Blueprint $table) {
   $table->increments('id');
   $table->string('name');
   $table->string('email')->unique();
   $table->string('password');
   $table->rememberToken();
   $table->timestamps();
  });
 }
 
 /**
  * Reverse the migrations.
  *
  * @return void
  */
 public function down()
 {
  Schema::dropIfExists('users');
 }
}

运行迁移

要运行应用中所有未执行的迁移,可以使用 Artisan 命令的migrate方法。

Migration

php artisan migrate

回滚迁移

想要回滚最新的一次迁移”操作“,可以使用rollback命令,注意这将会回滚最后一批运行的迁移,可能包含多个迁移文件:

Migration

php artisan migrate:rollback

migrate:reset命令将会回滚所有的应用迁移:

Migration

php artisan migrate:reset

在单个命令中回滚/迁移

migrate:refresh命令将会先回滚所有数据库迁移,然后运行migrate命令。这个命令可以有效的重建整个数据库:

Migration

php artisan migrate:refresh
php artisan migrate:refresh --seed

常用迁移属性

$table->increments(‘id'); 数据库主键自增 ID
$table->integer(‘votes'); 等同于数据库中的 INTEGER 类型
$table->float(‘amount'); 等同于数据库中的 FLOAT 类型
$table->char(‘name', 4); 等同于数据库中的 CHAR 类型
$table->dateTime(‘created_at'); 等同于数据库中的 DATETIME 类型
$table->enum(‘choices', [‘foo','bar']); 等同于数据库中的 ENUM 类型
$table->tinyInteger(‘numbers'); 等同于数据库中的 TINYINT 类型
$table->timestamps(); 添加 created_at 和 updated_at 列

一些列名约束条件的写法

Migration

Schema::table('users', function ($table) {
 $table->integer('votes')->unsigned(); //无符号类型
});

常用约束

->first() 将该列置为表中第一个列 (仅适用于 MySQL)
->after(‘column') 将该列置于另一个列之后 (仅适用于 MySQL)
->nullable() 允许该列的值为 NULL
->default($value) 指定列的默认值
->unsigned() 设置 integer 列为 UNSIGNED

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php随机输出名人名言的代码
Oct 07 PHP
php实现多张图片上传加水印技巧
Apr 18 PHP
解析php5配置使用pdo
Jul 03 PHP
基于php中使用excel的简单介绍
Aug 02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
Jun 24 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
Thinkphp实现短信验证注册功能
Oct 18 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
PHP APP微信提现接口代码
Sep 30 PHP
PHP设计模式之模板方法模式实例浅析
Dec 20 PHP
PHP将整数数字转换为罗马数字实例分享
Mar 17 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 #PHP
Laravel中的Blade模板引擎示例详解
Oct 10 #PHP
PHP小白必须要知道的php基础知识(超实用)
Oct 10 #PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
Oct 10 #PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 #PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 #PHP
PHP完全二叉树定义与实现方法示例
Oct 09 #PHP
You might like
php date()日期时间函数详解
2010/05/16 PHP
php字符串分割函数用法实例
2015/03/17 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python二分查找算法的递归实现方法
2016/05/12 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
超市创业计划书
2014/04/24 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python
2022漫威和DC电影上映作品
2022/04/05 欧美动漫
Python中的 enumerate和zip详情
2022/05/30 Python
python基础之//、/与%的区别详解
2022/06/10 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技