Laravel 中的数据库播种是什么?
What is database seeding in Laravel?
我使用 Laravel 框架,我最近得知有一个名为 database seeding
的东西可以为我们的测试生成一个假数据集。我的理解正确吗?
嗯,这很奇怪。这个怎么运作?它如何知道数据库的 X 列中我需要哪种类型的数据?它是如何产生的?
此外,我不能为我的真实数据集制作种子 (类似于导出)?你知道,我不太懂英语,这就是为什么我无法理解数据库字段中 seed 的概念。
是的,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'),
]);
}
}
}
That’s it – $faker->name
will generate a random person name, and $faker->email
– a random email. After running command php artisan db:seed
your database get populated with some random entries.
您可以在 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;
希望对您有所帮助!
通常您使用 model Factories and faker 创建虚假数据(与关系等)来开发和测试您的应用程序。
如果你想播种真实的数据,只需要使用命令导入转储。或者,如果您的数据类似于 table 国家/地区,请创建插入真实数据的播种器,而无需使用 faker 或模型工厂。
此外,您可以使用 some package 从真实数据创建播种器。
您可能想阅读 docs on seeding。
我使用 Laravel 框架,我最近得知有一个名为 database seeding
的东西可以为我们的测试生成一个假数据集。我的理解正确吗?
嗯,这很奇怪。这个怎么运作?它如何知道数据库的 X 列中我需要哪种类型的数据?它是如何产生的?
此外,我不能为我的真实数据集制作种子 (类似于导出)?你知道,我不太懂英语,这就是为什么我无法理解数据库字段中 seed 的概念。
是的,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'),
]);
}
}
}
That’s it –
$faker->name
will generate a random person name, and$faker->email
– a random email. After running commandphp artisan db:seed
your database get populated with some random entries.
您可以在 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;
希望对您有所帮助!
通常您使用 model Factories and faker 创建虚假数据(与关系等)来开发和测试您的应用程序。
如果你想播种真实的数据,只需要使用命令导入转储。或者,如果您的数据类似于 table 国家/地区,请创建插入真实数据的播种器,而无需使用 faker 或模型工厂。
此外,您可以使用 some package 从真实数据创建播种器。
您可能想阅读 docs on seeding。