Как выполнить заполнение базы данных в Laravel
Раньше я публиковал статью Как создать базу данных в 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. Я хотел бы услышать ваши мысли и предложения в разделе комментариев ниже.
Статьи по Теме
- Интеграция PayPal Payments Pro в Laravel
- Создайте приманку для борьбы со спамом в форме в Laravel
- Добавление Google reCAPTCHA v3 на ваш сайт Laravel