Laravel Seeder: Como inserir múltiplos registros

Seeder é um mecanismo que possibilita inserir registros em uma tabela do banco de dados.

 Escrevendo testes automatizados com PHPUnit

São muitos os cenários que os Seeders se aplicam, podemos citar, por exemplo, inserir usuários padrão para acessos em módulos administrativos. Ainda é possível fazer inserções de configurações e registros necessários para o bom funcionamento da nossa aplicação.

O Laravel nos permite criar facilmente Seeder para nossos modelos e fazer múltiplos registros, mas para isso, devemos criar uma classe através do comando artisan abaixo.

php artisan make:seeder UserSeed

Uma vez que os Seeders estejam criados, os arquivos ficarão disponíveis na pasta database\seeders.

Antes de inserir os registros, precisamos registrar nosso UserSeeder no método run da classe DatabaseSeeder. Sem essa configuração, a Seeder criará não será executada com o comando padrão.

Abra o arquivo database\seeders\DatabaseSeeder.php e faça a chamada para a UserSeeder, conforme mostra o código abaixo.

public function run()
{
     $this->call(UserSeeder::class);
}

Com a referência ao arquivo realizada, agora basta fazer a inserção dos múltiplos registros, conforme mostra o código abaixo. Note que o método insert recebe um array de arrays, ou seja, todos os registros devem estar dentro de um array principal.

<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class UserSeeder extends Seeder
{
    public function run()
    {
        DB::table('users')->insert(
            [
                [
                    'name'     => 'Alice Croft',
                    'email'    => 'alice.croft@fakemail.com',
                ],
                [
                    'name'     => 'Bruce Stay',
                    'email'    => 'bruce.stay@fakemail.com',
                ],
                [
                    'name'     => 'Maya Hit',
                    'email'    => 'maya.hit@fakemail.com',
                ]
            ]
        );
    }
}

No exemplo acima, foi inserido alguns usuários na tabela users. O que nos resta agora é rodar o comando artisan para inserir esses registros no banco.

php artisan db:seed

E assim finalizamos mais um artigo, caso queira saber mais sobre os Seeders, nós temos um artigo que te mostra o que são e para que server Seeders no Laravel.