[扩展推荐] 将数据表里的数据导出成 Seeder 文件

说明

开发者使用 Laravel 部署一个新项目的时候, 通常会使用 seeder 快速填充本地数据以方便开发调试.

iseed 扩展包提供了可将数据表里的数据直接转换为 seeder 文件的功能.

使用场景

通常情况下, 我们会希望本地开发环境数据与生产完全一致, 这样开发者的开发与调试会更加的直观、有效率.
当我们想将生产环境的数据同步到所有开发者的系统中, 此扩展包将会非常有用.

文章的 DEMO 项目

截图

运行

Demo 代码请见:
https://github.com/zhengjinghua/est-iseed-...

请参照此文档运行 Demo:
分享:如何利用 Homestead 快速运行一个 Laravel 项目

文章概览

  1. 安装;
  2. 基础用法;
  3. 推荐实践;
  4. 更多用法.

接下来是详细解说

安装

1). 直接运行以下命令安装扩展包

composer require orangehill/iseed

2). 在你的 config/app.php 文件中添加 Service Provider

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

安装结束, 就这么简单.

基础用法

导出指定表的数据

php artisan iseed 后面带上本地数据表的名称, 可直接将数据库表的内容转换为 seeder 文件.

如下可生成 users 表的 seeder 文件:

php artisan iseed users

也可选择同时生成 userstopics seeder 文件:

php artisan iseed users,topics

强制覆盖导出文件 -- force

在命令行后面带上 force 参数, 将强制覆盖原有生成的 seeder 文件, 如下:

php artisan iseed users --force

将直接覆盖之前生成的 UsersTableSeeder.php 文件

根据上面两个命令导出的 UsersTableSeeder.php 文件内容如下图:

导出指定数据库里的表 -- database

使用 database 参数, 可指定数据库里的数据表, 如下:

php artisan iseed users --database=mysql2

推荐实践

在实际开发的过程中, 为了不影响生产环境的正常运转, 建议使用以下方式同步开发者的 seed 数据:

  1. 将生产环境的备份数据导入到某一个开发者的电脑中;
  2. 此开发者运行 php artisan iseed ... 生成指定的 seeder 文件;
  3. 将 seeder 文件提交版本管理, 其他人同步更新并导入.

更多用法

关于其它更加详尽的命令行, 如: max, prerun, postrun 等使用可查看 原文档.

本项目由 The EST Group 成员 @monkey 整理发布,首发地为 Laravel China 社区,转载必须贴上原文链接。


欢迎关注 LaravelTips, 一个专注于为 Laravel 开发者服务, 致力于帮助开发者更好的掌握 Laravel 框架, 提升开发效率的微信公众号.

本帖已被设为精华帖!
monkey
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

执行完命令后: ErrorException : file_put_contents(/Applications/mampstack/apps/jscrm/database/seeders/OrderRecordsTableSeeder.php): failed to open stream: No such file or directory

3年前 评论
cai_niao 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!