使用orangehill/iseed自动生成数据填充

Friday, April 14, 2017

开发项目中,总会碰到需要重置项目的情况,而有一些数据却是项目运行所需要的,这种情况下一般是两种方式:

  1. 手动在数据库中导入数据
  2. 手动编写数据填充

以上两种方式,不管哪种都需要手动进行操作,每次重置项目都操作一遍真的很浪费时间,而手动编写数据填充的话,如果数据记录少的话还可以,如果有很多条数据要处理就不理想了,几万条数据一条条写出来想想都很刺激,这个时候就需要祭出法宝了 – orangehill/iseed

##简介

Inverse seed generator (iSeed) is a Laravel package that provides a method to generate a new seed file based on data from the existing database table.

orangehill/iseed 是一个自动生成数据填充的神器,支持 Artisan代码调用 两种生成方式。

安装

修改 composer.json

如果 Laravel 5 的版本高于 5.3.8

    "require": {
		"orangehill/iseed": "dev-master"
	}

如果 Laravel 5 的版本低于 5.3.8

    "require": {
		"orangehill/iseed": "2.2"
	}

针对 Laravel 4

    "require": {
		"orangehill/iseed": "1.1"
	}

更新 Composer

    composer update

注册 ServiceProvider

修改 app/config/app.php 文件,在 providers 数组中添加:

    Orangehill\Iseed\IseedServiceProvider::class

Artisan 使用

基本使用:

	php artisan iseed table_name

注意这里的表名称不包含数据表前缀

其他支持的选项:

选项 作用 示例
force 强制生成,覆盖已有的数据迁移 php artisan iseed table_name –force
dumpauto 是否在操作完成后执行 composer dump-autoload,默认是true php artisan iseed table_name –dumpauto=true
clean 在开始生成数据迁移前清除 app/database/seeds/DatabaseSeeder.php 文件 php artisan iseed table_name –clean
database 指定数据库链接名称 php artisan iseed table_name –database=sqlite
max 指定生成数据填充包含的最大数据条数 php artisan iseed table_name –max=10
exclude 指定生成数据时需要排除的字段 php artisan iseed table_name –exclude=id,created_at,updated_at
prerun 指定生成数据填充前监听的事件,如果事件返回false,则自动生成失败,支持多个监听事件,顺序和要生成的表名一致 php artisan iseed table_name1,table_name2 –prerun=table1Event,table2Event
postrun 指定生成数据填充后监听的事件,如果事件返回false,则生成完成后会抛出异常,支持多个监听事件,顺序和要生成的表名一致 php artisan iseed table_name1,table_name2 –postrun=table1Event,table2Event

代码调用

在代码中手动生成数据迁移时,使用如下代码:

\Iseed::generateSeed('users', 'connectionName', 'numOfRows');

connectionNamenumOfRows 参数为可选项。

生成的数据填充会存放于 /database/seeds (Laravel 5) 或者 /app/database/seeds (Laravel 4)。

Laravel Laravel

书童造轮子之极验验证码书童造轮子之自动生成数据字典