Учебник Laravel (5.7) Посев
Вступление
Laravel включает в себя простой метод заполнения вашей базы данных тестовыми данными с использованием начальных классов. Все начальные классы хранятся в каталоге database / seed. Классы семян могут иметь любое имя, которое вы пожелаете, но, вероятно, должны следовать некоторым разумным соглашениям, таким как UsersTableSeeder и т. Д. По умолчанию класс DatabaseSeeder определен для вас. Из этого класса вы можете использовать метод call для запуска других начальных классов, что позволяет вам контролировать порядок заполнения.
Для начала предположим, что у нас есть 2 таблицы пользователей и продуктов. Наша таблица пользователей содержит имя столбца, адрес электронной почты, пароль. И наша таблица «продукты» имеет имя столбца, описание.
Откройте терминал в корневом каталоге вашего проекта и выполните две нижеприведенные команды одну за другой.
php artisan make: seeder UsersTableSeeder php artisan make: seeder ProductsTableSeeder Приведенные выше команды создадут 2 файла UsersTableSeeder.php и ProductsTableSeeder.php в папке базы данных / seed. Мы вставляем 50 записей каждая в обе таблицы. Для этого в функции run обоих сидов нам нужно написать для нее код.
UsersTableSeeder.php
<?php
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\User::class, 50)->create()->each(function ($u) {
$u->save();
});
}
}
ProductsTableSeeder.php
<?php
use Illuminate\Database\Seeder;
class ProductsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\Product::class, 50)->create()->each(function ($p) {
$p->save();
});
}
}
Написание Фабрики
Далее нам нужно написать фабрики для наших моделей. Откройте файл ModelFactory.php из базы данных / фабрики и поместите в него приведенный ниже код.
ModelFactory.php
<?php
/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| Here you may define all of your model factories. Model factories give
| you a convenient way to create models for testing and seeding your
| database. Just tell the factory how a default model should look.
|
*/
/** @var \Illuminate\Database\Eloquent\Factory $factory */
$factory->define(App\User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
];
});
$factory->define(App\Product::class, function (Faker\Generator $faker) {
return [
'name' => $faker->word,
'decsription' => $faker->sentence,
];
});
В приведенном выше коде мы передали значения с помощью экземпляра FakerGenerator в столбцы нашей таблицы.
Run The Seeder
Теперь мы все собрались с нашими фабриками и классами сеялок. Осталось только запустить сеялку. Для этого нам нужно позвонить нашим классам сеялок.
Откройте DatabaseSeeder.php из каталога database / seed и напишите приведенный ниже код в методе run ().
DatabaseSeeder.php
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(UsersTableSeeder::class);
$this->call(ProductsTableSeeder::class);
}
}
Далее в терминале запускаем команду php artisan db: seed. Эта команда запускает выполнение и вставляет поддельные данные в указанные вами таблицы базы данных.
Предыдущий: Учебник Laravel (5.7) Redis
Следующая: Учебник Laravel (5.7)
Новый контент: Composer: менеджер зависимостей для PHP , R программирования