{"id":25553,"date":"2021-06-02T19:24:00","date_gmt":"2021-06-02T16:24:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25553"},"modified":"2021-10-18T03:06:10","modified_gmt":"2021-10-18T00:06:10","slug":"come-eseguire-il-seeding-del-database-in-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/come-eseguire-il-seeding-del-database-in-laravel\/","title":{"rendered":"Come eseguire il seeding del database in Laravel"},"content":{"rendered":"<p>In passato, ho pubblicato un articolo <a href=\"https:\/\/themewp.inform.click\/it\/come-eseguire-il-seeding-del-database-utilizzando-la-libreria-php-faker\/\" title=\"How to Seed Database in PHP using Faker Library\" >How to Seed Database in PHP using Faker Library<\/a>. Durante la ricerca su questo argomento, ho scoperto che Laravel utilizza anche la stessa libreria per il seeding del database. Poich\u00e9 ho scritto un articolo su questo argomento per PHP, ho deciso di scrivere un post anche sul seeding del database Laravel. Questo perch\u00e9 Laravel utilizza il proprio processo per eseguire il seeding del database.<\/p>\n<h3>Che cos&#8217;\u00e8 il seeding del database?<\/h3>\n<p>Il seeding del database significa riempire le tabelle del database con i dati di test a livello di codice. Con questo approccio, si possono inserire migliaia di record nel database in pochi minuti. \u00c8 un modo efficiente piuttosto che farlo manualmente. Potresti volere un dato fittizio per testare la tua applicazione e il seeding del database attraverso il programma ti fa risparmiare un sacco di tempo.<\/p>\n<h3>Libreria Faker<\/h3>\n<p><a href=\"https:\/\/github.com\/fzaninotto\/Faker\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Faker<\/a> \u00e8 una libreria open source che genera dati falsi per il database della tua applicazione. Usando Faker, si possono inserire migliaia di voci nel database in un paio di minuti. Questa libreria salva un noioso lavoro di inserimento dati per gli sviluppatori. Puoi ottenere quasi tutti i tipi di dati che desideri. La biblioteca genera un&#8217;e-mail falsa, nome, numero di cellulare, parole, frasi, paragrafi, numeri casuali, ecc. Puoi leggere il tipo di dati che forniscono sulla <a href=\"https:\/\/github.com\/fzaninotto\/Faker\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentazione<\/a>.<\/p>\n<p>Laravel installa questa libreria al suo interno. Ci\u00f2 significa che non \u00e8 necessario installarlo separatamente. Detto questo, diamo un&#8217;occhiata a come eseguire il seeding del database in Laravel.<\/p>\n<h3>Iniziare<\/h3>\n<p>Per iniziare, creer\u00f2 una tabella &quot;clienti&quot; con le colonne nome, email e biografia. Vedremo il processo di seeding della singola tabella. Allo stesso modo, gli utenti possono eseguire il seeding di tutte le tabelle che desiderano.<\/p>\n<p>Crea una tabella di migrazione per i clienti utilizzando il comando:<\/p>\n<pre><code>php artisan make:migration create_customers_table<\/code><\/pre>\n<p>Apri il file di migrazione e aggiungi le colonne al metodo &quot;up&quot; come mostrato di seguito.<\/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>Esegui il comando migrate che creer\u00e0 una tabella &quot;clienti&quot; nel tuo database.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Successivamente, crea un modello &quot;Cliente&quot; che corrisponda alla tabella &quot;Clienti&quot;. A partire da Laravel 8.x i tuoi modelli verranno creati all&#8217;interno della directory &quot;App\/Modelli&quot;. Per questo tutorial, presumo che tu stia usando Laravel 8.x. Nella versione precedente di Laravel, \u00e8 necessario modificare il percorso del modello.<\/p>\n<pre><code>php artisan make:model Customer<\/code><\/pre>\n<h3>Semina database in Laravel<\/h3>\n<p>Il seeding di un database in Laravel richiede di seguire alcuni passaggi che sono la scrittura di seeders, la creazione di una fabbrica di modelli e l&#8217;esecuzione di seeders. Facciamolo uno per uno.<\/p>\n<h4>Seminatrici di scrittura<\/h4>\n<p>Se guardi il filesystem Laravel, noterai la directory <code>database\/seeders<\/code>. Tutte le classi seed andranno all&#8217;interno di questa directory. Una classe seed ha il <code>run<\/code>metodo da cui \u00e8 possibile inserire i dati nella tabella.<\/p>\n<p>Crea una classe seme CustomerSeeder usando il comando:<\/p>\n<pre><code>php artisan make:seeder CustomerSeeder<\/code><\/pre>\n<p>Dopo aver eseguito questo comando, dovresti vedere il <code>CustomerSeeder.php<\/code>file creato in <code>database\/seeders<\/code>. Apri questo file e alla <code>run<\/code>funzione aggiungi il codice sottostante.<\/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>Qui sto chiamando la fabbrica del Cliente che creeremo nel passaggio successivo. Nota che ho passato il valore come 50 al metodo &#8216;count&#8217;. Significa che 50 righe devono essere inserite nella tabella &quot;clienti&quot;. Regola questo valore come desideri.<\/p>\n<h4>Creazione di fabbriche<\/h4>\n<p>Il codice che ho scritto <code>CustomerSeeder<\/code>cercher\u00e0 una fabbrica per ottenere i dati del test. Significa che dobbiamo creare una fabbrica modello. Dar\u00f2 un nome alla fabbrica come CustomerFactory. Eseguire il comando per generare la fabbrica del modello.<\/p>\n<pre><code>php artisan make:factory CustomerFactory --model=Customer<\/code><\/pre>\n<p>Questo comando creer\u00e0 un <code>CustomerFactory.php<\/code>all&#8217;interno della <code>database\/factories<\/code>directory. Aprire questo file e al metodo di definizione generare dati di prova come 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>L&#8217;array sopra restituisce un nome, un&#8217;e-mail e un testo scelti a caso per la biografia.<\/p>\n<h4>Seminatrici in esecuzione<\/h4>\n<p>Abbiamo impostato tutto con la seminatrice e la fabbrica. Ora esegui il nostro seeder usando il comando seguente.<\/p>\n<pre><code>php artisan db:seed --class=CustomerSeeder<\/code><\/pre>\n<p>Controlla la tua tabella &#8216;clienti&#8217; e dovrebbe avere le 50 voci fittizie inserite.<\/p>\n<p>Il comando precedente esegue un singolo seeder che abbiamo passato esplicitamente. Supponiamo che tu voglia creare pi\u00f9 seeders ed eseguirli tutti utilizzando un singolo comando. In tali casi, dovresti chiamare i tuoi seeders dal <code>DatabaseSeeder<\/code>quale si trova nella stessa directory <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>L&#8217;utente pu\u00f2 creare tanti seeders in base alle proprie esigenze e chiamarli da questo <code>run<\/code>metodo.<\/p>\n<p>Infine, esegui i seeders usando il comando seguente.<\/p>\n<pre><code>php artisan db:seed<\/code><\/pre>\n<p>Chiamer\u00e0 tutti i seeders dal <code>run<\/code>metodo e lo eseguir\u00e0.<\/p>\n<p>Spero che tu capisca sul seeding del database in Laravel. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/integrazione-paypal-payments-pro-in-laravel\/\" title=\"Integrazione PayPal Payments Pro in Laravel\">Integrazione PayPal Payments Pro in Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-creare-honeypot-per-combattere-lo-spam-dei-moduli-in-laravel\/\" title=\"Crea Honeypot per combattere lo spam dei moduli in Laravel\">Crea Honeypot per combattere lo spam dei moduli in Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/una-guida-sull-aggiunta-di-google-recaptcha-v3-al-tuo-sito-web-laravel\/\" title=\"Aggiunta di Google reCAPTCHA v3 al tuo sito web Laravel\">Aggiunta di Google reCAPTCHA v3 al tuo sito web Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Stai cercando seeding di database a Laravel? In questo articolo, mostro come creare ed eseguire il seeding nell&#8217;applicazione Laravel. Libreria falsa<\/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":[500],"tags":[846],"class_list":["post-25553","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=25553"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25553\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21644"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}