Laravel中的数据库种子是什么?

时间:2016-12-18 06:30:45

标签: php laravel laravel-seeding

我使用Laravel框架,最近我被告知有一些名为database seeding的东西会为我们的测试生成一个假数据集。我的理解是否正确?

那太奇怪了。这个怎么运作?它如何知道我在X列数据库中需要哪种类型的数据?它是如何产生的?

另外,我不能制作真实数据集的种子(类似于导出)吗?你知道,我不太懂英语,这就是为什么我无法理解数据库领域中 seed 的概念。

2 个答案:

答案 0 :(得分:7)

是的,Laravel配备了非常棒的&流行的包名为 - Faker。您可以使用Faker编写此示例并生成10个这样的用户(在DatabaseSeeder.php内):

use DB;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

use Faker\Factory as Faker;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $faker = Faker::create();
        foreach (range(1,10) as $index) {
            DB::table('users')->insert([
                'name' => $faker->name,
                'email' => $faker->email,
                'password' => bcrypt('secret'),
            ]);
        }
    }
}
  

就是这样 - $faker->name将生成随机人名,$faker->email - 随机发送电子邮件。运行命令php artisan db:seed后,您的数据库会填充一些随机条目。

您可以在composer.json下的require-dev文件中找到此软件包:

"require-dev": {
    "fzaninotto/faker": "^1.6", // <------- here
    "mockery/mockery": "0.9.*",
    "phpunit/phpunit": "~5.0",
    "symfony/css-selector": "3.1.*",
    "symfony/dom-crawler": "3.1.*",
    "laracasts/testdummy": "~2.0"
},

Faker可以生成大量数据,下面给出了一些数据:

$faker->randomDigit;
$faker->numberBetween(1,100);
$faker->word;
$faker->paragraph;
$faker->lastName;
$faker->city;
$faker->year;
$faker->domainName;
$faker->creditCardNumber;

希望这有帮助!

答案 1 :(得分:4)

通常,您正在使用model Factoriesfaker创建虚假数据(包含关系等),以便开发和测试您的应用。

如果要播种真实数据,只需使用命令导入转储。或者,如果您的数据类似于国家/地区的表格,请创建播种器,插入实际数据而不使用faker或模型工厂。

此外,您可以使用some package从实际数据创建播种机。

您可能需要阅读docs on seeding