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 相关文章推荐
关于zend studio 出现乱码问题的总结
Jun 23 PHP
php打开远程文件的方法和风险及解决方法
Nov 12 PHP
destoon整合UCenter图文教程
Jun 21 PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
php中__toString()方法用法示例
Dec 07 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 PHP
PHP优化之批量操作MySQL实例分析
Apr 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时区转换转换函数
2014/01/07 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
web 页面分页打印的实现
2009/06/22 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
ES6 十大特性简介
2020/12/09 Javascript
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Golang与python线程详解及简单实例
2017/04/27 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
找到不普通的东西:Bonanza
2016/10/20 全球购物
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
采购部部长岗位职责
2014/02/06 职场文书
演讲稿格式范文
2014/05/19 职场文书
投资意向书
2014/07/30 职场文书
施工安全协议书范本
2014/09/26 职场文书
复活读书笔记
2015/06/29 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
升学宴祝酒词
2015/08/11 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
使用JS实现简易计算器
2021/06/14 Javascript