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防注入漏洞过滤函数代码
Apr 11 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 PHP
php base64 编码与解码实例代码
Mar 21 PHP
php实现小程序支付完整版
Oct 09 PHP
php中关于换行的实例写法
Sep 26 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 PHP
PHP判断是否是json字符串
Apr 01 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变量引用的面试题
2010/08/08 PHP
php 文件上传类代码
2011/08/06 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
对mac下nodejs 更新到最新版本的最新方法(推荐)
2018/05/17 NodeJs
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
跟老齐学Python之Python文档
2014/10/10 Python
python实现kMeans算法
2017/12/21 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
python retrying模块的使用方法详解
2019/09/25 Python
python3实现弹弹球小游戏
2019/11/25 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
Python线程threading模块用法详解
2020/02/26 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
教师求职信
2014/06/17 职场文书
2015年班组长工作总结
2015/04/10 职场文书