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 相关文章推荐
默默简单的写了一个模板引擎
Jan 02 PHP
判断是否为指定长度内字符串的php函数
Feb 16 PHP
PHP超级全局变量数组小结
Oct 04 PHP
配置php网页显示各种语法错误
Sep 23 PHP
thinkphp备份数据库的方法分享
Jan 04 PHP
php通过array_merge()函数合并关联和非关联数组的方法
Mar 18 PHP
php简单防盗链实现方法
Jul 29 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
Dec 23 PHP
Symfony模板的快捷变量用法实例
Mar 17 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
PHP实现生成推广海报的方法详解
Mar 14 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 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
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
2007/05/30 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
深入理解js中this的用法
2016/05/28 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
js改变html的原有内容实现方法
2016/10/05 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
python实现梯度法 python最速下降法
2020/03/24 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
python字典的值可以修改吗
2020/06/29 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
MCAKE蛋糕官方网站:一直都是巴黎的味道
2018/02/06 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
暑期社会实践感言
2014/02/25 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
财务管理专业自荐书
2014/09/02 职场文书
连锁超市项目计划书
2014/09/15 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
企业文化学习心得体会
2016/01/21 职场文书