Seeding com Faker no Laravel 8

O objetivo deste post é, mostrar de uma forma simples e rápida como fazer seeding da base de dados utilizando o Package Faker, o qual cria dados fictícios para facilitar os nossos teste enquanto desenvolvemos a nossa aplicação.
O Laravel disponibiliza funcionalidades unicas que nos ajudam a desenvolver de uma forma rápida, elegante e eficaz, mas para isso devemos estudar profundamente o Laravel e assim podermos aproveitar o máximo dessas funcionalidades. Pessoalmente uso as Model Factories e Faker para criar os meus dados de teste e posso confirmar a grande utilidade desta forma de trabalhar.
Aqui podemos ver a tabela “users” antes de fazermos seeding:

A versão 8 do Laravel já nos vem por defeito com o Package fakerphp/faker e pode verificar isso no seu ficheiro composer.json.

Por defeito o Laravel 8 cria para nós a classe UserFactory que podemos encontrar em database/factories que tem o seguinte código:

Cada Factory fica encadeada com um Model através do Trait HasFactory, como podemos verificar no Model User:

Podemos no entanto criar as nossas próprias factories usando o comando artisan:
php artisan make:factory PostFactory --model=Post
A flag --model=Post
serve para encadear a Factory ao Model correspondente.
De seguida vamos à classe DatabaseSeeder e escrevemos o seguinte código:

Depois corremos o comando php artisan db:seed
e a magia dá-se 😉

O que é que aconteceu?
Simples. O comando db:seed vai executar o método run() na classe DatabaseSeeder, que no nosso caso contém o seguinte código: \App\Models\User::factory()->count(10)->create();
Este códido simplesmente vai executar a UserFactory 10 vezes como demos ordem para fazer no método count(10).
Pode consultar a documentação para aprender mais sobre seeding da base de dados, pois há inúmeras possibilidades, no entanto esta que falámos neste post é a minha preferida.