Поиск…


замечания

Выделение базы данных позволяет вставлять данные, общие тестовые данные в вашу базу данных. По умолчанию в DatabaseSeeder database/seeds имеется класс DatabaseSeeder .

Запуск сеялок можно выполнить с помощью

php artisan db:seed

Или, если вы хотите обработать только один класс

php artisan db:seed --class=TestSeederClass

Как и во всех командах мастеров, вы имеете доступ к широкому спектру методов, которые можно найти в документации api

Вставка данных

Существует несколько способов вставки данных:

Использование DB Facade

public function run()
{
    DB::table('users')
        ->insert([
            'name' => 'Taylor',
            'age'  => 21
        ]);
}

Визуализация модели

public function run()
{
    $user = new User;
    $user->name = 'Taylor';
    $user->save();
}

Использование метода create

public function run()
{
    User::create([
        'name' => 'Taylor',
        'age'  => 21
    ]);
}

Использование фабрики

public function run()
{
    factory(App\User::class, 10)->create();
}

Seeding && удаление старых данных и автоматическое добавление ресетов

public function run()
{
    DB::table('users')->delete();
    DB::unprepared('ALTER TABLE users AUTO_INCREMENT=1;');
    factory(App\User::class, 200)->create();
}

Дополнительную информацию о вставке / обновлении данных см. В примере Persisting .

Вызов других сеялок

В вашем классе DatabaseSeeder вы можете вызвать другие сеялки

$this->call(TestSeeder::class)

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

Создание сеялки

Чтобы создать сеялки, вы можете использовать команду make:seeder Artisan. Все сгенерированные сеялки будут помещены в каталог database/seeds .

$ php artisan make:seeder MoviesTableSeeder

Созданные сеялки будут содержать один метод: run . Вы можете вставить данные в свою базу данных в этот метод.

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class MoviesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        App\Movie::create([
            'name' => 'A New Hope',
            'year' => '1977'
        ]);

        App\Movie::create([
            'name' => 'The Empire Strikes Back',
            'year' => '1980'
        ]);
    }
}

Обычно вы хотите вызвать все ваши сеялки внутри класса DatabaseSeeder .

Когда вы закончите писать сеялки, используйте команду db:seed . Это run функцию запуска DatabaseSeeder .

$ php artisan db:seed

Вы также можете указать, чтобы запустить определенный класс сеялки для индивидуальной работы с --class опции --class .

$ php artisan db:seed --class=UserSeeder

Если вы хотите откат и повторить все миграции, а затем повторно:

$ php artisan migrate:refresh --seed

Команда migrate:refresh --seed является ярлыком для этих 3 команд:

$ php artisan migrate:reset     # rollback all migrations
$ php artisan migrate           # run migrations
$ php artisan db:seed           # run seeders

Безопасное насыщение

Возможно, вы захотите повторно засеять свою базу данных, не затрагивая ранее созданные семена. Для этой цели вы можете использовать firstOrCreate в своей firstOrCreate :

EmployeeType::firstOrCreate([
    'type' => 'manager',
]);

Затем вы можете засеять базу данных:

php artisan db:seed

Позже, если вы хотите добавить другого сотрудника, вы можете просто добавить его в один и тот же файл:

EmployeeType::firstOrCreate([
    'type' => 'manager',
]);
EmployeeType::firstOrCreate([
    'type' => 'secretary',
]);

И снова запустите свою базу данных без проблем:

php artisan db:seed

Обратите внимание, что при первом вызове вы извлекаете запись, но ничего не делаете с ней.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow