Что такое заполнение базы данных в 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;

Надеюсь это поможет!

Другие вопросы по тегам