Laravel DB Seeds - тестовые данные v выборочные данные

Я, вероятно, неправильно понимаю, как именно это работает, но как лучше всего это сделать? Я имею в виду кое-что, но это кажется довольно хакерским.

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

У меня также есть набор данных по умолчанию, которые должны поступить в производство. В настоящее время я добавляю это непосредственно в миграцию. Например, если бы я добавлял таблицу для account_roles, я мог бы включить следующее в нижней части миграции

$account_admin = array('role' => 'Account Administrator', 'flag' => 'ACCOUNT_ADMIN');
$account_owner = array('role' => 'Account Administrator', 'flag' => 'ACCOUNT_OWNER');
DB::table('account_roles')->insert($account_admin);
DB::table('account_roles')->insert($account_owner);

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

Есть ли другой (лучший) способ сделать это?

1 ответ

Решение

Вы можете запустить проверку текущей среды в своем файле сеялки и при необходимости заполнить

<?php

class DatabaseSeeder extends Seeder {

    public function run()
    {
            Eloquent::unguard();

            if (App::environment() === 'production')
            {
                $this->call('ProductionSeeder');
            }
            else
            {
                $this->call('StagingSeeder');
            }
    }

}
Другие вопросы по тегам