Laravel 5 使用 Seeder & Faker 生成假数据
还在为手动填写假数据而头疼吗?Laravel 使用 Faker 可以很灵活的添加所需的特定格式的数据,可以通过 tinker 命令行预览、保存测试数据,也可以直接在 Seed 中写好相应代码一键生成。所有的 seeder 文件在 database/seeds 目录下。
Faker 是一个 PHP 库,为您生成假数据
laravel 框架默认引入了 fzaninotto/Faker 包,这个包能让我们快速的生成一些测试数据。本地化
packages
composer require fzaninotto/faker
创建 seeder 文件
1  | php artisan make:seeder UserTableSeeder  | 
用 laracasts/generators 包创建文件
1  | // 步骤1:通过Composer安装  | 
命令
1  | make:migration:schema  | 
迁移与模式
1  | php artisan make:migration:schema create_articles_table --schema="title:string, conent:text, published_at:timestamp"  | 
创建如下文件内容
1  | 
  | 
删除
1  | php artisan make:migration:schema remove_published_at_from_articles_table --schema="published_at:timestamp"  | 
创建如下文件内容
1  | 
  | 
多对多关系
1  | php artisan make:migration:pivot tags articles  | 
创建如下文件内容
1  | 
  | 
用 laravel-test-factory-helper 包自动生成属性
该软件包可帮助您从现有的模型/数据库结构生成模型工厂,以便更快速地测试Laravel应用程序
1  | composer mpociot/laravel-test-factory-helper  | 
config/app.php 添加服务提供商
1  | Mpociot\LaravelTestFactoryHelper\TestFactoryHelperServiceProvider::class  | 
执行
1  | // database/factory/ModelFactory.php 模型工厂文件会自动生成各个模型对应字段数据  | 
安全保证
在 .env 文件中的 APP_ENV 配置通常可以配置以下三个值
1  | // local 代表本地环境  | 
执行 seed
使用 php artisan make:seeder 命令来创建数据时,会调用 database/seeders 目录下的 DatabaseSeeder.php 文件中的 run() 方法。生成数据的代码可以放在 run() 中,既支持 DB 操作,也支持 Factory 方法,在 run() 中使用 call() 函数一次性来添加操作方法。
1  | 
  | 
1  | // 执行这一步如果出现错误: 出现 [ReflectionException] Class does not exist 的提示。  |