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&amp;&amp;mysql)四
Oct 09 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
laravel容器延迟加载以及auth扩展详解
Mar 02 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
Dec 21 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
Sep 29 PHP
Laravel模型间关系设置分表的方法示例
Apr 21 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
phpfpm的作用和用法
Oct 10 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
Laravel validate error处理,ajax,json示例
Oct 25 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
YII路径的用法总结
2014/07/09 PHP
php生成shtml类用法实例
2014/12/09 PHP
php数组转成json格式的方法
2015/03/09 PHP
joomla数据库操作示例代码
2016/01/06 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
firefox中JS读取XML文件
2006/12/21 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
浅谈Python 中整型对象的存储问题
2016/05/16 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
python验证身份证信息实例代码
2019/05/06 Python
django 中使用DateTime常用的时间查询方式
2019/12/03 Python
编写python代码实现简单抽奖器
2020/10/20 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
大学毕业生工作的自我评价
2013/10/01 职场文书
工程预算与管理应届生求职信
2013/10/06 职场文书
北大研究生linux应用求职信
2013/10/29 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫