当我们开发完成一个(小)项目,发布到线上时,我们需要将本地数据库迁移到服务器上,并且填充初始化数据。而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的外部插件也是相当强大,我们可以合理利用于些外部插件帮助我们开发过程中处理重复繁琐的步骤。好了,我们下一篇再见:)
--------------------------- 我是可爱的分割线 ----------------------------
最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。