Что такое заполнение базы данных в Laravel?
Я использую Laravel Framework, и недавно мне сообщили, что есть что-то database seeding
который производит поддельный набор данных для наших тестов. Правильно ли мое понимание?
Ну, это довольно странно. Как это устроено? Как узнать, какой тип данных мне нужен в столбце X базы данных? И как это генерирует это?
Кроме того, я не могу сделать семя моего реального набора данных (что-то вроде экспорта)? Знаете, я не очень хорошо знаю английский, поэтому не могу понять концепцию seed в поле базы данных.
2 ответа
Обычно вы используете фабрики моделей и фейкер для создания поддельных данных (с отношениями и т. Д.) Для разработки и тестирования вашего приложения.
Если вы хотите заполнить реальные данные, просто используйте команды для импорта дампа. Или, если ваши данные представляют собой что-то вроде таблицы со странами, создайте сеялку, которая вставляет реальные данные без использования фейкера или фабрики моделей.
Также вы можете использовать какой-то пакет для создания сеялки из реальных данных.
Вы можете прочитать документы по посеву.
Да, 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;
Надеюсь это поможет!