styde / seeder
Laravel的改进版种子器
1.0.5
2016-01-22 13:50 UTC
Requires
- fzaninotto/faker: 1.5.*@dev
- laravel/framework: 5.*
README
此包适用于Laravel,允许您使用Faker数据填充数据库。它是Laravel 5.1模型工厂的替代品。使用此包,您可以填充应用程序中的模型及其相关模型,使用Faker包。
安装
通过Composer安装
- 将以下指令添加到您的composer.json文件中的"require"对象
"styde/seeder": "^1.0"
或者在控制台简单执行
composer require styde/seeder
然后运行composer update
。
- 安装
Styde Seeder
后,您需要将服务提供者添加到config/app.php
文件中的providers
数组
'providers' => [
// ...
Styde\Seeder\SeederServiceProvider::class,
// ...
],
- 然后向您的
database/seeds/DatabaseSeeder.php
文件中添加以下内容
<?php
use Styde\Seeder\BaseSeeder;
class DatabaseSeeder extends BaseSeeder
{
protected $truncate = array(
//'users',
);
protected $seeders = array(
//'User',
);
}
指定您想要$truncate
的数据库表(顺序不重要,因为外键检查将被禁用),然后添加$seeders
。默认情况下,它将自动补全后缀"TableSeeder"
,因此不需要添加它。
用法
要创建新的种子文件,您可以运行
php artisan styde:seeder NameOfSeeder
然后将在database/seeds
目录下创建一个名为NameOfSeederTableSeeder.php
的新文件。
然后使用getModel()
方法中的新模型实例和getDummyData
方法中的其属性完成您的种子器。您可以使用Faker来生成假数据,例如
php artisan styde:seeder User
在getModel()
中完成模型,并使用Faker数据填充一些属性
<?php
use Styde\Seeder\Seeder;
use Faker\Generator;
use App\User;
class UserTableSeeder extends Seeder
{
protected $total = 50;
public function getModel()
{
return new User();
}
public function getDummyData(Generator $faker, array $customValues = array())
{
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt('secret'),
];
}
}
一旦您在Laravel中运行种子命令php artisan db:seed
,它将默认创建50个具有随机数据的用户。
辅助函数
此外,当您在测试或php artisan tinker
中工作时,也可以使用这两个辅助函数
/**
* Create one instance or a collection of the given model and persist them to the database.
*
* @param string $seeder
* @param integer $total
* @param array $customValues
*
* @return mixed
*/
function seed($seeder, $total = 1, array $customValues = array())
例如,要创建5个用户,请使用seed('User', 5)
,或者要创建一个具有特定数据的用户seed('User', ['name' => 'John', 'email' => 'john@example.com'])
。
/**
* Create one instance or a collection of a given model.
*
* @param string $seeder
* @param integer $total
* @param array $customValues
*
* @return mixed
*/
function model($seeder, $total = 1, array $customValues = array())
使用此辅助函数,您只能创建实例或集合,但它们不会持久化到数据库。
关于
Styde Seeder由Duilio Palacios创建,作为课程Crea tu primera aplicación con Laravel 5(西班牙语)的一部分