Миграции и сеялки и команда для производственных данных [дублировать]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Миграции и сеялки и команда для производственных данных [дублировать]

Сообщение Anonymous »

Недавно после некоторого исследования я придумал вопрос: как обрабатывать по умолчанию / начальную популяцию данных в проекте Laravel, который идет в прямом эфире: Должен ли он переходить в сеялки или миграции? Я видел две очень разные школы мысли. < /P>

Nuno Maduro говорит: < /p>

Seeders следует использовать только для данных, специфичных для окружающей среды (локальный или тест), а не для значений системы по умолчанию. Сеялки из базы данных со временем устарели и могут больше не отражать истинное состояние ваших производственных данных. Это может ввести несоответствия, если вам нужно повторно запустить миграции для развертывания вашего приложения в другом месте. Напротив, миграции по своей природе надежны, потому что они определяют точную структуру и преобразования, которые формируют ваши производственные данные, гарантируя согласованность в разных средах. Значения: < /p>

Они поддерживают зависимости между таблицами. Производство. Часть схемы приложения. < /p>
< /li>
< /ul>
В моем проекте у меня есть два различных типа данных по умолчанию: < /p>

< /p>

Dishcategories & Dishsubcategories: здесь это становится сложно. У меня есть большой предопределенный массив категорий и подкатегорий (вроде стартового набора). Чтобы избежать вздутия миграционного файла, я переместил этот массив в отдельный файл PHP и включил его при вставке данных. С другой стороны, они могут развиваться позже, когда они управляются на панели администратора. /> < /li>
Это может привести к дублирующимся строкам в тестовых средах. Эта команда сразу после запуска миграций < /p>
Пример кода этих 2 подходов (Seeder /Migration) < /p>
Seeder < /p>

Код: Выделить всё

class RolesSeeder extends Seeder
{
public function run(): void
{
Role::create(['name' => 'user']);
Role::create(['name' => 'admin']);
}
}

< /code>
миграция < /p>
    public function up(): void
{
Schema::create('roles', function (Blueprint $table) {
$table->id();
$table->string('name')->unique();
$table->timestamps();
});

$roles = [
'user',
'admin'
];

foreach ($roles as $role){
DB::table('roles')->insert([
'name' => $role,
'created_at' => now(),
'updated_at' => now(),
]);
}
}

Уже есть Laravel: миграция и посева для производственных данных по этой теме, но поскольку вопрос был задан давным -давно, я решил снова поднять эту тему

Подробнее здесь: https://stackoverflow.com/questions/797 ... ction-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»