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下实现一个阿拉伯数字转中文数字的函数
Jul 10 PHP
php读取html并截取字符串的简单代码
Nov 30 PHP
Blitz templates 最快的PHP模板引擎
Apr 06 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
PHP cdata 处理(详细介绍)
Jul 05 PHP
php中的curl使用入门教程和常见用法实例
Apr 10 PHP
PHP中spl_autoload_register()和__autoload()区别分析
May 10 PHP
php中smarty变量修饰用法实例分析
Jun 11 PHP
PHP根据key删除数组中指定的元素
Feb 28 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 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
ftp类(myftp.php)
2006/10/09 PHP
请php正则走开
2008/03/15 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
php微信公众号开发模式详解
2016/11/28 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
Python易忽视知识点小结
2015/05/25 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
教师自荐书
2013/10/08 职场文书
制定岗位职责的原则
2013/11/08 职场文书
五年级语文教学反思
2014/01/30 职场文书
大学生就业求职信
2014/06/12 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers