✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Como fazer a propagação do banco de dados no Laravel

84

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 runmé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.phparquivo criado em database/seeders. Abra este arquivo e para a runfunçã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 CustomerSeederprocurará 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.phpdentro do database/factoriesdiretó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 DatabaseSeederque 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 runmétodo.

Finalmente, execute os seeders usando o comando abaixo.

php artisan db:seed

Ele irá chamar todos os semeadores do runmé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

Fonte de gravação: artisansweb.net

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação