O faker é uma biblioteca que já vem integrada ao Laravel, que serve para gerarmos massas de dados fakes, porém críveis, e com diversas regras. Serve para testar nossos models, layout, carga em banco, e diversos outros fatores.
Caso não utilize o Laravel, você assim mesmo pode usar a biblioteca, apenas siga as intruções no site do repositório.
Caso prefira testar em sua máquina, segue o repositório. Será necessário utilizar o docker para rodar, mas já foi ensinado aqui
Cenário
Imagine a situação, você quer gerar um model sobre ordens de pagamento, e gostaria de testar diversos cenários associados a ela (total de pagamentos por mês,total de credores, total de UF’s que serão necessários enviar pagamento pagar pagar ICMS, etc). Então ao invés de gerarmos esses registros manuais no banco, o que pode levar a vícios na massa de dados, o melhor é criar 1000 registros seguindo um determinado padrão.
Instalando o Laravel
Para esse tutorial, vou considerar que esteja utilizando o repositório no final do artigo, mas caso a instalação do laravel seja tranquila pra você (ela é, acredite), pule as etapas do docker.
| git clone https://github.com/samhk222/laravel-faker-tutorial | |
| cd laravel-faker-tutorial | |
| docker-compose up -d | |
| # Instale as dependencias | |
| docker exec TUT-7.2.x-webserver composer install | |
| # Copie o arquivo .env e altere para acessar seu banco | |
| cp public_html/.env.example public_html/.env | |
| # Altere os parametros do arquivo .env | |
| # DB_CONNECTION=mysql | |
| # DB_HOST=TUT-5.6-mysql | |
| # DB_PORT=3306 | |
| # DB_DATABASE=SERVER | |
| # DB_USERNAME=root | |
| # DB_PASSWORD=password | |
| # Gere a chave | |
| docker exec TUT-7.2.x-webserver php artisan key:generate | |
| # De as permissoes necessaria nas pastas | |
| docker exec TUT-7.2.x-webserver chmod 777 -R storage/ bootstrap/cache |
Acesse, no browser, o endereço http://0.0.0.0:8877 para verificar a instalação
Criando uma migration
Com o laravel rodando, vá até o console e digite
php artisan make:model OrdemDePagamento -a # O parâmetro <strong>-a</strong> cria o Model, Factory, a migration e o Controller automaticamente # Repare que não estamos criando dentro do docker, isso é para evitar uns erros chatos de permissão, # porque ele criaria os arquivos como root dentro do container, e precisariamos digitar nossa senha de root # quando estivessemos editando os arquivos de fora do container.
O primeiro arquivo que editaremos, é o arquivo de migration, alternado o método UP para ficar conforme abaixo:
public function up()
{
Schema::create('ordem_de_pagamentos', function (Blueprint $table) {
$table->increments('id');
$table->string('nome');
$table->string('CPF', 14);
$table->string('CNPJ', 14);
$table->string('telefone', 15);
$table->string('endereco');
$table->string('cidade');
$table->string('UF',2);
$table->decimal('valor',9,2);
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent();
});
}
Fique a vontade para criar campos extras.
Em sequência vamos rodar essa migration. Lembre-se, se você trabalha em equipe, não deixe de usar migrations para manter a estrutura do seu banco de dados igual entre a equipe. Isso evita 70% dos erros em produção.
╭─samhk222@obra /var/www/html/laravel-faker-tutorial/public_html ‹master*› ╰─$ docker exec TUT-7.2.x-webserver php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table Migrating: 2018_12_28_135707_create_ordem_de_pagamentos_table Migrated: 2018_12_28_135707_create_ordem_de_pagamentos_table
Crie o seeder.
╭─samhk222@obra /var/www/html/laravel-faker-tutorial/public_html ‹master*› ╰─$ docker exec TUT-7.2.x-webserver php artisan make:seeder OrdemDePagamentoSeeder Seeder created successfully.
Edite ele, alterando o método run, para os seguintes dados
public function run()
{
$faker = \Faker\Factory::create('pt_BR');
for ($i=0; $i<50; $i++) {
DB::table('ordem_de_pagamentos')->insert([
'nome' => $faker->name,
'CPF' => $faker->cpf,
'CNPJ' => $faker->cnpj(false),
'telefone' => sprintf('(0%s) %s', $faker->areaCode, $faker->landline),
'endereco' => $faker->address,
'cidade' => $faker->city,
'UF' => $faker->stateAbbr,
'valor' => $faker->randomFloat(2, 12, 150000),
]);
}
}
Falta uma última alteração, que é no controle dos seeders. Precisamos habilitar que ele execute nossa classe. No arquivo database/seeds/DatabaseSeeder.php altere o método run, e inclua a classe
public function run()
{
$this->call(OrdemDePagamentoSeeder::class);
}
Pronto, agora basta rodar o seed para cadastramos os dados no banco
╭─samhk222@obra /var/www/html/laravel-faker-tutorial/public_html ‹master*› ╰─$ docker exec TUT-7.2.x-webserver php artisan db:seed Seeding: OrdemDePagamentoSeeder Database seeding completed successfully.
Dessa forma, estaremos criando 50 registros aleatórios, com os dados gerados pela classe Faker, e localizados para pt-BR. Existe uma infinidade de valores que podem ser utilizados como Formatadores, inclusive alguns disponíveis para pt-BR. Veja todos eles no site do repositório. Uma dica, pesquise por pt_BR para ver os modificadores especiais, como por exempo CNPJ ou CPF.


