当我们开发完成一个(小)项目,发布到线上时,我们需要将本地数据库迁移到服务器上,并且填充初始化数据。而Laravel框架规定了一套完善的数据迁移与填充机制。

在官网中分别介绍了以下四个命令:

php artisan make:migration

php artisan migrate

php artisan make:seeder

php artisan db:seed

分别来创建迁移(migration)和填充器(seeder),并运行。但是,如何创建、编写填充器并不是我们这一节的重点。试问有哪位,会一行一行写代码,编写用于创建表和填充数据的php代码?如果有,只能说,大侠请看下一篇。

写在话题前面,现在我的实验数据库lab中,有一张名为organization的表。实验过程中,都是以这张表

本节的重点,我们着重介绍如何自动生成迁移、运行迁移、自动生成数据填充、运行填充。这个世界上不缺牛人,感谢这些牛B的大侠为我们提供这么多便利的工具。

1、结构迁移

(1) 为了将本地库的数据表结构自动创建为migration文件,我们需要预先安装个库(传送门):

我们不需要自己clone,不需要自己手动配置,只需在项目根目录下运行:

composer require --dev "kitloong/laravel-migrations-generator" -vvv

(2) 导出organiztion表的迁移结构

php artisan migrate:generate organization

导出的迁移结构被存放到了/database/migrations目录下。

(3) 在线上环境导入

将项目/database/migrations传到线上环境中,并运行以下命令:

php artisan migrate --force

命令运行完成后,就会发现,线上数据库中被导入了organization表。同时,数据库中自动创建了migrations表,这张表的作用是登记已经迁移成功的表结构。如果下次想要重新迁移一次,需要清空这张表对应的数据。

到这一步,该迁移的表结构,已经都迁移成功了。接下来,在迁移成功的表结构中,填充初始数据。

2、数据填充

(1) 同样,为了自动将本地数据导出为seeder,我们需要先安装下面的库

composer require "orangehill/iseed" -vvv

在网上很多文章中,还需要进行下面两个步骤,但是在我的版本中是不需要的。这两个步骤记录在此,仅供参考:

在/config/app.php中添加:

'providers' => [
...
Orangehill\Iseed\IseedServiceProvider::class,
],

并执行:

composer dump-autoload

(2) 导出organization表的填充数据

php artisan iseed organization --force

导出的填充数据,会自动放到/database/seeds目录中。

(3) 在线上环境中导入

将/database/seeds下的文件传到线上环境,并运行以下命令:

php artisan db:seed --force

执行完成之后,数据就自动填充进线上数据库中了。

这一篇到这里就结束了,Laravel的外部插件也是相当强大,我们可以合理利用于些外部插件帮助我们开发过程中处理重复繁琐的步骤。好了,我们下一篇再见:)

---------------------------  我是可爱的分割线  ----------------------------

最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。

Laravel入坑指南(9)——数据迁移与填充的更多相关文章

  1. ElasticSearch入坑指南之概述及安装

    ---恢复内容开始--- ElasticSearch入坑指南之概述及安装 了解ElasticSearch ElasticSearch(简称ES)基于Lucene的分布式全文检索引擎.使用ES可以实现近 ...

  2. C语言入坑指南-被遗忘的初始化

    前言 什么是初始化?为什么要初始化?静态变量和局部变量的初始化又有什么区别?实际应用中应该怎么做?本文将一一回答这些问题. 什么是初始化 初始化指的是对数据对象或者变量赋予初始值.例如: int va ...

  3. Elasticsearch入坑指南之RESTful API

    Elasticsearch入坑指南之RESTful API Tags:Elasticsearch ES为开发者提供了非常丰富的基于Http协议的Rest API,通过简单的Rest请求,就可以实现非常 ...

  4. Rust入坑指南:核心概念

    如果说前面的坑我们一直在用小铲子挖的话,那么今天的坑就是用挖掘机挖的. 今天要介绍的是Rust的一个核心概念:Ownership.全文将分为什么是Ownership以及Ownership的传递类型两部 ...

  5. Rust入坑指南:鳞次栉比

    很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉比"这个标题是不是显得很有文化? 在Rust入坑指南:常规套路一文中我们已经介绍 ...

  6. Rust入坑指南:齐头并进(上)

    我们知道,如今CPU的计算能力已经非常强大,其速度比内存要高出许多个数量级.为了充分利用CPU资源,多数编程语言都提供了并发编程的能力,Rust也不例外. 聊到并发,就离不开多进程和多线程这两个概念. ...

  7. Phalcon如何切换数据库《Phalcon入坑指南系列 三》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能(项目配置.控制器.模型.增.删.改.查) 三.Phalcon ...

  8. electron入坑指南

    electron入坑指南 简介 electron 实际集成chrome浏览器和node环境, 运行你写的网页 app 基本目录结构 index.html 名称可以不是index, 这个文件与普通网页的 ...

  9. oracle入坑日记<五>数据表

    1   数据表 1.1.数据表是存放数据字段信息的地方:在Oracle,数据表拥有者单位是用户,同时数据表属于表空间.如: 登录my_user用户在orcl表空间下创建的表就是 my_user用户在o ...

  10. laravel基础课程---16、数据迁移(数据库迁移是什么)

    laravel基础课程---16.数据迁移(数据库迁移是什么) 一.总结 一句话总结: 是什么:数据库迁移就像是[数据库的版本控制],可以让你的团队轻松修改并共享应用程序的数据库结构. 使用场景:解决 ...

随机推荐

  1. 【TouchGFX】IAR 下实现 touchgfx Caching Bitmaps 通过文件方式获取图像资源

    1.Caching Bitmaps 修改缓存方式 2.修改 blockCopy 方法(注意:忘记返回状态导致发生错误) 3.修改分散文件将位于 ExtFlashSection section 数据重定 ...

  2. SpringBoot02:运行原理初探

    @EnableAutoConfiguration @EnableAutoConfiguration:开启自动配置功能 以前我们需要自己配置的东西,而现在SpringBoot可以自动帮我们配置 @Ena ...

  3. [转帖]kingbase(人大金仓)的一些常用表操作语句

    包括 1)创建表 2)删除表 3)加字段 4)字段换名 5)字段改类型 6)字段添加注释 7)修改字段为自增类型 8)增加主键 9)查看模式下的表 一.创建和删除表 DROP TABLE IF EXI ...

  4. Redis lua脚本简要学习

    Redis lua脚本简要学习 背景 上周督促客户从Windows平台升级到了Linux平台. redis一周相安无事. 但是这周一突然又出现了卡断和慢的情况. 只能继续进行分析. 分析思路 现场日志 ...

  5. 【转帖】【奇技淫巧】Linux | 安全保障防火墙-iptables

    虽然说Linux在安全方面确实相当于windows要更加可靠一些,但一般使用其作为服务器的我们,也不能大意,也是需要严格限制网络传输过程中的出入规则.上篇文章我们有聊到统计网络的信息,这篇文章来学习一 ...

  6. Oracle 查询用户下表名,表列数,表行数,表大小的SQL

    最近想分析下数据库的信息, 然后写了这个SQL. 比较lowB一些. 因为Oracle的 deferred_segment_creation 参数的影响. 很多表如果是0行,那么是不会创建extent ...

  7. Oracle 查看所有表大小的SQL

    Oracle 查看所有表大小的SQL 比较坑的是 lob 字段和 表的大小不在一个地方 为了出结果 我这边使用了 union all 慢的一逼... SELECT sum( tablesize ), ...

  8. Springboot 内嵌Tomcat 的http连接池与thread的关系

    前言 最近看了很多tcp/ip 连接以及 IO相关的文章,但是依旧对数据库连接池等的部分不是很清楚, 所以这里仅是简单描述一下tomcat对应的http连接池数量的情况,不考虑与数据库的连接池的情况. ...

  9. 使用boot.iso镜像安装Oracle Linux 8

    本文记录使用boot.iso镜像安装Oracle Linux 8. 镜像下载 Oracle Linux 8 boot镜像可以从这里下载. 安装 Oracle Linux 8 boot镜像安装系统跟使用 ...

  10. 缩小ios的包体

    不选全部兼容设备 在xcode中导出ipa时,不勾选导出全部兼容性设备,这样导出的ipa包含两种架构:armv7和64 打包压缩 unity提供三种压缩模式可以选择,默认选择的是:default不压缩 ...