кодесурса
«Laravel

Учебник Laravel (5.7) Посев

script1adsense2code
script1adsense3code

Вступление

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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code