我使用Laravel框架,最近我被告知有一個名爲database seeding
的東西,它會爲我們的測試生成一個假數據集。我的理解是否正確?什麼是Laravel的數據庫播種?
好吧,這很奇怪。怎麼運行的?它如何知道在數據庫的X列中需要哪種類型的數據?它是如何生成它的?
另外,我不能讓我的真實數據集(類似於導出)種子?你知道,我不太瞭解英語,這就是爲什麼我無法理解種子在數據庫領域的概念。
我使用Laravel框架,最近我被告知有一個名爲database seeding
的東西,它會爲我們的測試生成一個假數據集。我的理解是否正確?什麼是Laravel的數據庫播種?
好吧,這很奇怪。怎麼運行的?它如何知道在數據庫的X列中需要哪種類型的數據?它是如何生成它的?
另外,我不能讓我的真實數據集(類似於導出)種子?你知道,我不太瞭解英語,這就是爲什麼我無法理解種子在數據庫領域的概念。
通常你使用model Factories和faker創建假數據(與關係等)來開發和測試你的應用程序。
如果您想播種真實數據,只需使用命令導入轉儲。或者,如果您的數據與國家/地區表格類似,則可以創建插入真實數據而不使用faker或模型工廠的播種器。
此外,您可以使用some package從實際數據創建播種機。您可能想要閱讀docs on seeding。
是的,Laravel配備了非常棒的&熱門包 - 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
後,您的數據庫將被填充一些隨機條目。
您可以require-dev
下找到這個包您composer.json
文件中:
"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->randomDigit;
$faker->numberBetween(1,100);
$faker->word;
$faker->paragraph;
$faker->lastName;
$faker->city;
$faker->year;
$faker->domainName;
$faker->creditCardNumber;
希望這有助於!
@stack - 很高興知道它幫助了你,謝謝! –
1)當我製作真實數據的種子時,它將被存儲在何處? 2)在那種情況下,當我使用'php artisan migrate --seed',那麼將會刷新遷移並自動再次插入所有實際數據? – stack
1)在播種機類中。或者,seeder類會調用一些命令(這取決於包)。 2)是的。 –