WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Как выполнить заполнение базы данных в Laravel

1 157

Раньше я публиковал статью Как создать базу данных в PHP с помощью библиотеки Faker. Изучая эту тему, я обнаружил, что Laravel также использует ту же библиотеку для заполнения базы данных. Поскольку я написал статью на эту тему для PHP, я решил также написать сообщение о заполнении базы данных Laravel. Это потому, что Laravel использует свой собственный процесс для заполнения базы данных.

Что такое заполнение базы данных?

Заполнение базы данных означает программное заполнение таблиц базы данных тестовыми данными. При таком подходе можно ввести тысячи записей в базу данных за несколько минут. Это более эффективный способ, чем делать это вручную. Возможно, вам понадобятся фиктивные данные для тестирования вашего приложения, а заполнение базы данных программой сэкономит вам массу времени.

Библиотека Faker

Faker – это библиотека с открытым исходным кодом, которая генерирует поддельные данные для базы данных вашего приложения. Используя Faker, можно за пару минут вставить в базу данных тысячи записей. Эта библиотека избавляет разработчиков от утомительной работы по вводу данных. Вы можете получить практически любые данные. Библиотека генерирует поддельный адрес электронной почты, имя, номер мобильного телефона, слова, предложения, абзацы, случайные числа и т.д. Вы можете прочитать, какие данные они предоставляют в документации.

Laravel устанавливает эту библиотеку в свое ядро. Это означает, что вам не нужно устанавливать его отдельно. При этом давайте посмотрим, как выполнять заполнение базы данных в Laravel.

Начиная

Для начала я собираюсь создать таблицу клиентов с именем столбца, адресом электронной почты и биографией. Мы увидим процесс заполнения единой таблицы. Таким же образом пользователи могут заполнить столько таблиц, сколько захотят.

Создайте таблицу миграции для клиентов с помощью команды:

php artisan make:migration create_customers_table

Откройте файл миграции и добавьте столбцы в метод «вверх», как показано ниже.

public function up()
{
    Schema::create('customers', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email');
        $table->text('bio');
        $table->timestamps();
    });
}

Запустите команду migrate, которая создаст в вашей базе данных таблицу клиентов.

php artisan migrate

Затем создайте модель «Клиент», которая сопоставляется с таблицей «Клиенты». Начиная с Laravel 8.x ваши модели будут созданы в каталоге «App / Models». В этом руководстве я предполагаю, что вы используете Laravel 8.x. В более старой версии Laravel вам нужно настроить путь к модели.

php artisan make:model Customer

Заполнение базы данных в Laravel

Для заполнения базы данных в Laravel необходимо выполнить несколько шагов: написание сидеров, создание фабрики моделей и запуск сидеров. Давайте сделаем это по одному.

Написание сеялки

Если вы посмотрите на файловую систему Laravel, вы заметите каталог database/seeders. Все начальные классы войдут в этот каталог. У начального класса есть runметод, из которого вы можете вставить данные в таблицу.

Создайте начальный класс CustomerSeeder с помощью команды:

php artisan make:seeder CustomerSeeder

После выполнения этой команды вы должны увидеть CustomerSeeder.phpфайл, созданный в папке database/seeders. Откройте этот файл и runдобавьте в функцию приведенный ниже код.

public function run()
{
    AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
        $customer->save();
    });
}

Здесь я вызываю фабрику клиентов, которую мы создадим на следующем шаге. Обратите внимание, что я передал значение 50 методу count. Это означает, что в таблицу клиентов нужно вставить 50 строк. Отрегулируйте это значение по своему усмотрению.

Создание фабрик

Код, который я написал, CustomerSeederбудет искать фабрику для получения тестовых данных. Значит, нам нужно создать модельную фабрику. Я дам фабрике имя CustomerFactory. Запустите команду, чтобы сгенерировать фабрику моделей.

php artisan make:factory CustomerFactory --model=Customer

Эта команда создаст CustomerFactory.phpвнутри database/factoriesкаталога. Откройте этот файл и в методе определения сгенерируйте тестовые данные следующим образом.

public function definition()
{
    return [
        'name' => $this->faker->name,
        'email' => $this->faker->unique()->safeEmail,
        'bio' => $this->faker->text,
    ];
}

Приведенный выше массив возвращает случайно выбранное имя, адрес электронной почты и текст для биографии.

Беговые сеялки

Все ставим с сеялкой и заводом. Теперь запустим нашу сеялку, используя команду ниже.

php artisan db:seed --class=CustomerSeeder

Проверьте свою таблицу клиентов, и в нее должны быть вставлены 50 фиктивных записей.

Приведенная выше команда запускает одиночную сеялку, которую мы передали явно. Допустим, вы хотите создать несколько сеялок и запустить их все с помощью одной команды. В таких случаях вам следует вызывать сидеры из DatabaseSeederкаталога, который находится в том же каталоге database/seeders.

public function run()
    {
        $this->call(CustomerSeeder::class);
        // call as many seeders you wish
    }

Пользователь может создать столько сеялок в соответствии со своими требованиями и вызывать их из этого runметода.

Наконец, запустите сеялки, используя команду ниже.

php artisan db:seed

Он вызовет все сидеры из runметода и выполнит его.

Надеюсь, вы понимаете, что такое заполнение базы данных в Laravel. Я хотел бы услышать ваши мысли и предложения в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее