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 代码优化的42条建议 推荐
Sep 25 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
PHP设计模式 注册表模式
Feb 05 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
解析php时间戳与日期的转换
Jun 06 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
PHP 正则表达式常用函数
Aug 17 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
详解PHP中array_rand函数的使用方法
Sep 11 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
Aug 03 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 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+javascript的日历控件
2009/11/19 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
Javascript复制实例详解
2016/01/28 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
Django限制API访问频率常用方法解析
2020/10/12 Python
什么是java序列化,如何实现java序列化
2012/11/14 面试题
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
十月份红领巾广播稿
2014/01/22 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
村主任当选感言
2015/08/01 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android
我的收音机情缘
2022/04/05 无线电
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers