styde/seeder

Laravel的改进版种子器

1.0.5 2016-01-22 13:50 UTC

This package is auto-updated.

Last update: 2024-09-06 08:40:15 UTC


README

此包适用于Laravel,允许您使用Faker数据填充数据库。它是Laravel 5.1模型工厂的替代品。使用此包,您可以填充应用程序中的模型及其相关模型,使用Faker包。

安装

通过Composer安装

  1. 将以下指令添加到您的composer.json文件中的"require"对象
"styde/seeder": "^1.0"

或者在控制台简单执行

composer require styde/seeder

然后运行composer update

  1. 安装Styde Seeder后,您需要将服务提供者添加到config/app.php文件中的providers数组
'providers' => [
    // ...
    Styde\Seeder\SeederServiceProvider::class,
    // ...
],
  1. 然后向您的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(西班牙语)的一部分