当我们开发完成一个(小)项目,发布到线上时,我们需要将本地数据库迁移到服务器上,并且填充初始化数据。而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. Redis-有序集合-zset

  2. 今天是个好日子,TaxCore(POS软件)备案指北

    POS软件是什么?你好意思吗,还在用老掉牙的Winform. 关于POS 销售终端--POS(point of sale)是一种多功能终端,把它安装在信用卡的特约商户和受理网点中与计算机联成网络,就能 ...

  3. [转帖]一次ORA-3136的处理

    https://oracleblog.org/working-case/deal-with-ora3136/ 最近收到一个告警,用户说数据库无法连接,但是从监控上看,oracle的后台进程已经侦听进程 ...

  4. [转帖]使用 Grafana 监控 TiDB 的最佳实践

    https://docs.pingcap.com/zh/tidb/stable/grafana-monitor-best-practices 使用 TiUP 部署 TiDB 集群时,如果在拓扑配置中添 ...

  5. [转帖]高性能分布式对象存储——MinIO实战操作(MinIO扩容)

    https://juejin.cn/post/7132852449244610574 一.前言 MinIO的基础概念和环境部署可以参考我之前的文章:高性能分布式对象存储--MinIO(环境部署) 二. ...

  6. [转帖]【jmeter】BeanShell用法详细汇总

    一.什么是Bean Shell BeanShell是用Java写成的,一个小型的.免费的.可以下载的.嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k. B ...

  7. [转帖]Redis Scan 原理解析与踩坑

    https://www.cnblogs.com/jelly12345/p/16424080.html 1. 概述由于 Redis 是单线程在处理用户的命令,而 Keys 命令会一次性遍历所有 Key, ...

  8. PG13 离线安装的简单办法

    1. 发现上班时间公司的网络几乎不可用 还是得找时间下载好离线包才可以. 找了一个最简单的办法 地址 https://yum.postgresql.org/ 选择版本 这次我选择最新的 继续之后继续选 ...

  9. How to Use Github

    C:\Windows\System32\drivers\etc\hosts 在最后加上一句 20.205.243.166 github.com 从 https://ping.chinaz.com/ 来 ...

  10. JS 逆向之 Hook,吃着火锅唱着歌,突然就被麻匪劫了!

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 什么是 Hook? Hook 中文译为钩子,Hook 实际上是 Windows 中提供的一种用以 ...