Ao executar o seed ele não finalizar a execução, fica travado no seed de SpecialistSeeder
Ao executar o seed ele não finalizar a execução, fica travado no seed de SpecialistSeeder
Meu seeder está assim:
class SpecialistSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Specialist::factory()
->has(Review::factory()->count(1_000))
->count(1_000)
->create();
}
}
Bom dia.
Isso tá travando porque o seeder está tentando criar 1.000 especialistas, cada um com 1.000 reviews ou seja, 1 milhão de registros em uma única execução. Isso consome muita memória e tempo, por isso a execução não finaliza.
Teste primeiro com valores menores, por exemplo:
Specialist::factory()
->has(Review::factory()->count(10))
->count(10)
->create();
Assim você confirma que o seeder está funcionando corretamente.
Executar em lotes (chunks)
Em vez de tentar criar tudo de uma vez, faça em partes:
for ($i = 0; $i < 100; $i++) {
Specialist::factory()
->has(Review::factory()->count(100))
->count(10)
->create();
}
Isso gera o mesmo volume total, mas evita sobrecarregar o banco e a memória de uma só vez.
Usar createQuietly
se não precisar de eventos
Factories podem disparar eventos do Eloquent, o que também aumenta o tempo. Se não precisar deles:
Specialist::factory()
->has(Review::factory()->count(1000))
->count(1000)
->createQuietly();