{"id":28129,"date":"2021-06-02T18:58:00","date_gmt":"2021-06-02T15:58:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28129"},"modified":"2021-10-18T04:05:08","modified_gmt":"2021-10-18T01:05:08","slug":"como-fazer-a-propagacao-do-banco-de-dados-no-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/como-fazer-a-propagacao-do-banco-de-dados-no-laravel\/","title":{"rendered":"Como fazer a propaga\u00e7\u00e3o do banco de dados no Laravel"},"content":{"rendered":"<p>No passado, publiquei um artigo <a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-criar-banco-de-dados-usando-a-biblioteca-php-faker\/\" title=\"How to seed banco de dados em PHP usando Faker Library\" >How to seed banco de dados em PHP usando Faker Library<\/a>. Ao pesquisar este t\u00f3pico, descobri que o Laravel tamb\u00e9m usa a mesma biblioteca para a propaga\u00e7\u00e3o do banco de dados. Como escrevi um artigo neste t\u00f3pico para PHP, decidi escrever um post sobre a semeadura do banco de dados Laravel tamb\u00e9m. Isso ocorre porque o Laravel usa seu pr\u00f3prio processo para propagar o banco de dados.<\/p>\n<h3>O que \u00e9 propaga\u00e7\u00e3o de banco de dados?<\/h3>\n<p>A propaga\u00e7\u00e3o do banco de dados significa preencher as tabelas do banco de dados com os dados de teste programaticamente. Com essa abordagem, \u00e9 poss\u00edvel inserir milhares de registros no banco de dados em poucos minutos. \u00c9 uma maneira eficiente, em vez de manualmente. Voc\u00ea pode querer dados fict\u00edcios para testar seu aplicativo e a propaga\u00e7\u00e3o do banco de dados por meio do programa economiza muito tempo.<\/p>\n<h3>Biblioteca Faker<\/h3>\n<p><a href=\"https:\/\/github.com\/fzaninotto\/Faker\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Faker<\/a> \u00e9 uma biblioteca de c\u00f3digo aberto que gera dados falsos para o banco de dados do seu aplicativo. Usando o Faker, \u00e9 poss\u00edvel inserir milhares de entradas no banco de dados em alguns minutos. Esta biblioteca economiza um trabalho enfadonho de entrada de dados para desenvolvedores. Voc\u00ea pode obter quase todos os tipos de dados que desejar. A biblioteca gera um e-mail falso, nome, n\u00famero de celular, palavras, frases, par\u00e1grafos, n\u00fameros aleat\u00f3rios, etc. Voc\u00ea pode ler o tipo de dados que eles fornecem na <a href=\"https:\/\/github.com\/fzaninotto\/Faker\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documenta\u00e7\u00e3o<\/a>.<\/p>\n<p>O Laravel instala esta biblioteca em seu n\u00facleo. Isso significa que voc\u00ea n\u00e3o precisa instal\u00e1-lo separadamente. Dito isso, vamos dar uma olhada em como fazer a propaga\u00e7\u00e3o de banco de dados no Laravel.<\/p>\n<h3>Come\u00e7ando<\/h3>\n<p>Para come\u00e7ar, vou criar uma tabela de &#8216;clientes&#8217; com as colunas nome, e-mail e biografia. Veremos o processo de propaga\u00e7\u00e3o da tabela \u00fanica. Da mesma forma, os usu\u00e1rios podem propagar quantas tabelas quiserem.<\/p>\n<p>Crie uma migra\u00e7\u00e3o para a tabela de clientes usando o comando:<\/p>\n<pre><code>php artisan make:migration create_customers_table<\/code><\/pre>\n<p>Abra o arquivo de migra\u00e7\u00e3o e adicione as colunas ao m\u00e9todo &#8216;up&#8217; conforme mostrado abaixo.<\/p>\n<pre><code>public function up()\n{\n\u00a0\u00a0\u00a0\u00a0Schema::create('customers', function (Blueprint $table) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;id();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('name');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('email');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;text('bio');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamps();\n\u00a0\u00a0\u00a0\u00a0});\n}<\/code><\/pre>\n<p>Execute o comando migrate que criar\u00e1 uma tabela de &#8216;clientes&#8217; em seu banco de dados.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Em seguida, crie um modelo &#8216;Cliente&#8217; que mapeia para a tabela &#8216;clientes&#8217;. Iniciando o Laravel 8.x seus modelos ser\u00e3o criados dentro do diret\u00f3rio &#8216;App \/ Modelos&#8217;. Para este tutorial, presumo que voc\u00ea esteja usando o Laravel 8.x. Na vers\u00e3o anterior do Laravel, voc\u00ea precisa ajustar o caminho do modelo.<\/p>\n<pre><code>php artisan make:model Customer<\/code><\/pre>\n<h3>Sementeira de banco de dados no Laravel<\/h3>\n<p>A propaga\u00e7\u00e3o de um banco de dados no Laravel requer que voc\u00ea siga alguns passos que s\u00e3o escrever seeders, criar uma f\u00e1brica de modelos e executar seeders. Vamos fazer um por um.<\/p>\n<h4>Escrevendo semeadores<\/h4>\n<p>Se voc\u00ea olhar o sistema de arquivos do Laravel, ver\u00e1 o diret\u00f3rio <code>database\/seeders<\/code>. Todas as classes de seed ir\u00e3o dentro deste diret\u00f3rio. Uma classe de semente possui o <code>run<\/code>m\u00e9todo a partir do qual voc\u00ea pode inserir os dados na tabela.<\/p>\n<p>Fa\u00e7a uma classe seed CustomerSeeder usando o comando:<\/p>\n<pre><code>php artisan make:seeder CustomerSeeder<\/code><\/pre>\n<p>Ap\u00f3s executar este comando, voc\u00ea dever\u00e1 ver o <code>CustomerSeeder.php<\/code>arquivo criado em <code>database\/seeders<\/code>. Abra este arquivo e para a <code>run<\/code>fun\u00e7\u00e3o adicione o c\u00f3digo abaixo.<\/p>\n<pre><code>public function run()\n{\n\u00a0\u00a0\u00a0\u00a0AppModelsCustomer::factory()-&gt;count(50)-&gt;create()-&gt;each(function ($customer) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$customer-&gt;save();\n\u00a0\u00a0\u00a0\u00a0});\n}<\/code><\/pre>\n<p>Aqui, estou ligando para a f\u00e1brica do cliente, que criaremos na pr\u00f3xima etapa. Observe que passei o valor como 50 para o m\u00e9todo de &#8216;contagem&#8217;. Isso significa que 50 linhas devem ser inseridas na tabela &#8216;clientes&#8217;. Ajuste este valor como desejar.<\/p>\n<h4>Cria\u00e7\u00e3o de f\u00e1bricas<\/h4>\n<p>O c\u00f3digo que escrevi <code>CustomerSeeder<\/code>procurar\u00e1 uma f\u00e1brica para obter os dados de teste. Isso significa que temos que criar uma f\u00e1brica modelo. Darei um nome \u00e0 f\u00e1brica como CustomerFactory. Execute o comando para gerar a f\u00e1brica de modelos.<\/p>\n<pre><code>php artisan make:factory CustomerFactory --model=Customer<\/code><\/pre>\n<p>Este comando criar\u00e1 um <code>CustomerFactory.php<\/code>dentro do <code>database\/factories<\/code>diret\u00f3rio. Abra este arquivo e para o m\u00e9todo de defini\u00e7\u00e3o gere dados de teste como segue.<\/p>\n<pre><code>public function definition()\n{\n\u00a0\u00a0\u00a0\u00a0return [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'name' =&gt; $this-&gt;faker-&gt;name,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'email' =&gt; $this-&gt;faker-&gt;unique()-&gt;safeEmail,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'bio' =&gt; $this-&gt;faker-&gt;text,\n\u00a0\u00a0\u00a0\u00a0];\n}<\/code><\/pre>\n<p>A matriz acima retorna um nome, e-mail e texto escolhidos aleatoriamente para a biografia.<\/p>\n<h4>Semeadores em execu\u00e7\u00e3o<\/h4>\n<p>Todos n\u00f3s configuramos com a semeadora e a f\u00e1brica. Agora execute nosso semeador usando o comando abaixo.<\/p>\n<pre><code>php artisan db:seed --class=CustomerSeeder<\/code><\/pre>\n<p>Verifique sua tabela de &#8216;clientes&#8217; e ela deve ter 50 entradas fict\u00edcias inseridas.<\/p>\n<p>O comando acima executa um \u00fanico semeador que passamos explicitamente. Digamos que voc\u00ea queira criar v\u00e1rios semeadores e execut\u00e1-los usando um \u00fanico comando. Nesses casos, voc\u00ea deve chamar seus seeders do <code>DatabaseSeeder<\/code>que se encontra no mesmo diret\u00f3rio <code>database\/seeders<\/code>.<\/p>\n<pre><code>public function run()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;call(CustomerSeeder::class);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ call as many seeders you wish\n\u00a0\u00a0\u00a0\u00a0}<\/code><\/pre>\n<p>O usu\u00e1rio pode criar tantos semeadores de acordo com seus requisitos e cham\u00e1-los a partir deste <code>run<\/code>m\u00e9todo.<\/p>\n<p>Finalmente, execute os seeders usando o comando abaixo.<\/p>\n<pre><code>php artisan db:seed<\/code><\/pre>\n<p>Ele ir\u00e1 chamar todos os semeadores do <code>run<\/code>m\u00e9todo e execut\u00e1-los.<\/p>\n<p>Espero que voc\u00ea entenda sobre a propaga\u00e7\u00e3o de banco de dados no Laravel. Eu gostaria de ouvir seus pensamentos e sugest\u00f5es na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/integracao-do-paypal-payments-pro-no-laravel\/\" title=\"Integra\u00e7\u00e3o do PayPal Payments Pro no Laravel\">Integra\u00e7\u00e3o do PayPal Payments Pro no Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-criar-honeypot-para-combate-com-formulario-de-spam-no-laravel\/\" title=\"Crie um Honeypot para Combater o Formul\u00e1rio de Spam no Laravel\">Crie um Honeypot para Combater o Formul\u00e1rio de Spam no Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/um-guia-para-adicionar-o-google-recaptcha-v3-ao-seu-site-laravel\/\" title=\"Adicionando Google reCAPTCHA v3 ao seu site Laravel\">Adicionando Google reCAPTCHA v3 ao seu site Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voc\u00ea est\u00e1 procurando por semeadura de banco de dados no Laravel? Neste artigo, mostro como criar e executar a propaga\u00e7\u00e3o no aplicativo Laravel. Biblioteca Faker<\/p>\n","protected":false},"author":1,"featured_media":21644,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[502],"tags":[848],"class_list":["post-28129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=28129"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28129\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21644"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=28129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=28129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=28129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}