Como fazer a propagação do banco de dados no Laravel
No passado, publiquei um artigo How to seed banco de dados em PHP usando Faker Library. Ao pesquisar este tópico, descobri que o Laravel também usa a mesma biblioteca para a propagação do banco de dados. Como escrevi um artigo neste tópico para PHP, decidi escrever um post sobre a semeadura do banco de dados Laravel também. Isso ocorre porque o Laravel usa seu próprio processo para propagar o banco de dados.
O que é propagação de banco de dados?
A propagação do banco de dados significa preencher as tabelas do banco de dados com os dados de teste programaticamente. Com essa abordagem, é possível inserir milhares de registros no banco de dados em poucos minutos. É uma maneira eficiente, em vez de manualmente. Você pode querer dados fictícios para testar seu aplicativo e a propagação do banco de dados por meio do programa economiza muito tempo.
Biblioteca Faker
Faker é uma biblioteca de código aberto que gera dados falsos para o banco de dados do seu aplicativo. Usando o Faker, é possível inserir milhares de entradas no banco de dados em alguns minutos. Esta biblioteca economiza um trabalho enfadonho de entrada de dados para desenvolvedores. Você pode obter quase todos os tipos de dados que desejar. A biblioteca gera um e-mail falso, nome, número de celular, palavras, frases, parágrafos, números aleatórios, etc. Você pode ler o tipo de dados que eles fornecem na documentação.
O Laravel instala esta biblioteca em seu núcleo. Isso significa que você não precisa instalá-lo separadamente. Dito isso, vamos dar uma olhada em como fazer a propagação de banco de dados no Laravel.
Começando
Para começar, vou criar uma tabela de ‘clientes’ com as colunas nome, e-mail e biografia. Veremos o processo de propagação da tabela única. Da mesma forma, os usuários podem propagar quantas tabelas quiserem.
Crie uma migração para a tabela de clientes usando o comando:
php artisan make:migration create_customers_table
Abra o arquivo de migração e adicione as colunas ao método ‘up’ conforme mostrado abaixo.
public function up()
{
Schema::create('customers', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->text('bio');
$table->timestamps();
});
}
Execute o comando migrate que criará uma tabela de ‘clientes’ em seu banco de dados.
php artisan migrate
Em seguida, crie um modelo ‘Cliente’ que mapeia para a tabela ‘clientes’. Iniciando o Laravel 8.x seus modelos serão criados dentro do diretório ‘App / Modelos’. Para este tutorial, presumo que você esteja usando o Laravel 8.x. Na versão anterior do Laravel, você precisa ajustar o caminho do modelo.
php artisan make:model Customer
Sementeira de banco de dados no Laravel
A propagação de um banco de dados no Laravel requer que você siga alguns passos que são escrever seeders, criar uma fábrica de modelos e executar seeders. Vamos fazer um por um.
Escrevendo semeadores
Se você olhar o sistema de arquivos do Laravel, verá o diretório database/seeders
. Todas as classes de seed irão dentro deste diretório. Uma classe de semente possui o run
método a partir do qual você pode inserir os dados na tabela.
Faça uma classe seed CustomerSeeder usando o comando:
php artisan make:seeder CustomerSeeder
Após executar este comando, você deverá ver o CustomerSeeder.php
arquivo criado em database/seeders
. Abra este arquivo e para a run
função adicione o código abaixo.
public function run()
{
AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
$customer->save();
});
}
Aqui, estou ligando para a fábrica do cliente, que criaremos na próxima etapa. Observe que passei o valor como 50 para o método de ‘contagem’. Isso significa que 50 linhas devem ser inseridas na tabela ‘clientes’. Ajuste este valor como desejar.
Criação de fábricas
O código que escrevi CustomerSeeder
procurará uma fábrica para obter os dados de teste. Isso significa que temos que criar uma fábrica modelo. Darei um nome à fábrica como CustomerFactory. Execute o comando para gerar a fábrica de modelos.
php artisan make:factory CustomerFactory --model=Customer
Este comando criará um CustomerFactory.php
dentro do database/factories
diretório. Abra este arquivo e para o método de definição gere dados de teste como segue.
public function definition()
{
return [
'name' => $this->faker->name,
'email' => $this->faker->unique()->safeEmail,
'bio' => $this->faker->text,
];
}
A matriz acima retorna um nome, e-mail e texto escolhidos aleatoriamente para a biografia.
Semeadores em execução
Todos nós configuramos com a semeadora e a fábrica. Agora execute nosso semeador usando o comando abaixo.
php artisan db:seed --class=CustomerSeeder
Verifique sua tabela de ‘clientes’ e ela deve ter 50 entradas fictícias inseridas.
O comando acima executa um único semeador que passamos explicitamente. Digamos que você queira criar vários semeadores e executá-los usando um único comando. Nesses casos, você deve chamar seus seeders do DatabaseSeeder
que se encontra no mesmo diretório database/seeders
.
public function run()
{
$this->call(CustomerSeeder::class);
// call as many seeders you wish
}
O usuário pode criar tantos semeadores de acordo com seus requisitos e chamá-los a partir deste run
método.
Finalmente, execute os seeders usando o comando abaixo.
php artisan db:seed
Ele irá chamar todos os semeadores do run
método e executá-los.
Espero que você entenda sobre a propagação de banco de dados no Laravel. Eu gostaria de ouvir seus pensamentos e sugestões na seção de comentários abaixo.
Artigos relacionados
- Integração do PayPal Payments Pro no Laravel
- Crie um Honeypot para Combater o Formulário de Spam no Laravel
- Adicionando Google reCAPTCHA v3 ao seu site Laravel