开发项目中,总会碰到需要重置项目的情况,而有一些数据却是项目运行所需要的,这种情况下一般是两种方式:
- 手动在数据库中导入数据
- 手动编写数据填充
以上两种方式,不管哪种都需要手动进行操作,每次重置项目都操作一遍真的很浪费时间,而手动编写数据填充的话,如果数据记录少的话还可以,如果有很多条数据要处理就不理想了,几万条数据一条条写出来想想都很刺激,这个时候就需要祭出法宝了 – 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');
connectionName
和numOfRows
参数为可选项。
生成的数据填充会存放于 /database/seeds
(Laravel 5) 或者 /app/database/seeds
(Laravel 4)。