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(),
]);
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ction-data
Мобильная версия