✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Come eseguire il seeding del database in Laravel

258

In passato, ho pubblicato un articolo How to Seed Database in PHP using Faker Library. Durante la ricerca su questo argomento, ho scoperto che Laravel utilizza anche la stessa libreria per il seeding del database. Poiché ho scritto un articolo su questo argomento per PHP, ho deciso di scrivere un post anche sul seeding del database Laravel. Questo perché Laravel utilizza il proprio processo per eseguire il seeding del database.

Che cos’è il seeding del database?

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. È 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.

Libreria Faker

Faker è 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’e-mail falsa, nome, numero di cellulare, parole, frasi, paragrafi, numeri casuali, ecc. Puoi leggere il tipo di dati che forniscono sulla documentazione.

Laravel installa questa libreria al suo interno. Ciò significa che non è necessario installarlo separatamente. Detto questo, diamo un’occhiata a come eseguire il seeding del database in Laravel.

Iniziare

Per iniziare, creerò una tabella "clienti" 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.

Crea una tabella di migrazione per i clienti utilizzando il comando:

php artisan make:migration create_customers_table

Apri il file di migrazione e aggiungi le colonne al metodo "up" come mostrato di seguito.

public function up()
{
    Schema::create('customers', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email');
        $table->text('bio');
        $table->timestamps();
    });
}

Esegui il comando migrate che creerà una tabella "clienti" nel tuo database.

php artisan migrate

Successivamente, crea un modello "Cliente" che corrisponda alla tabella "Clienti". A partire da Laravel 8.x i tuoi modelli verranno creati all’interno della directory "App/Modelli". Per questo tutorial, presumo che tu stia usando Laravel 8.x. Nella versione precedente di Laravel, è necessario modificare il percorso del modello.

php artisan make:model Customer

Semina database in Laravel

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’esecuzione di seeders. Facciamolo uno per uno.

Seminatrici di scrittura

Se guardi il filesystem Laravel, noterai la directory database/seeders. Tutte le classi seed andranno all’interno di questa directory. Una classe seed ha il runmetodo da cui è possibile inserire i dati nella tabella.

Crea una classe seme CustomerSeeder usando il comando:

php artisan make:seeder CustomerSeeder

Dopo aver eseguito questo comando, dovresti vedere il CustomerSeeder.phpfile creato in database/seeders. Apri questo file e alla runfunzione aggiungi il codice sottostante.

public function run()
{
    AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
        $customer->save();
    });
}

Qui sto chiamando la fabbrica del Cliente che creeremo nel passaggio successivo. Nota che ho passato il valore come 50 al metodo ‘count’. Significa che 50 righe devono essere inserite nella tabella "clienti". Regola questo valore come desideri.

Creazione di fabbriche

Il codice che ho scritto CustomerSeedercercherà una fabbrica per ottenere i dati del test. Significa che dobbiamo creare una fabbrica modello. Darò un nome alla fabbrica come CustomerFactory. Eseguire il comando per generare la fabbrica del modello.

php artisan make:factory CustomerFactory --model=Customer

Questo comando creerà un CustomerFactory.phpall’interno della database/factoriesdirectory. Aprire questo file e al metodo di definizione generare dati di prova come segue.

public function definition()
{
    return [
        'name' => $this->faker->name,
        'email' => $this->faker->unique()->safeEmail,
        'bio' => $this->faker->text,
    ];
}

L’array sopra restituisce un nome, un’e-mail e un testo scelti a caso per la biografia.

Seminatrici in esecuzione

Abbiamo impostato tutto con la seminatrice e la fabbrica. Ora esegui il nostro seeder usando il comando seguente.

php artisan db:seed --class=CustomerSeeder

Controlla la tua tabella ‘clienti’ e dovrebbe avere le 50 voci fittizie inserite.

Il comando precedente esegue un singolo seeder che abbiamo passato esplicitamente. Supponiamo che tu voglia creare più seeders ed eseguirli tutti utilizzando un singolo comando. In tali casi, dovresti chiamare i tuoi seeders dal DatabaseSeederquale si trova nella stessa directory database/seeders.

public function run()
    {
        $this->call(CustomerSeeder::class);
        // call as many seeders you wish
    }

L’utente può creare tanti seeders in base alle proprie esigenze e chiamarli da questo runmetodo.

Infine, esegui i seeders usando il comando seguente.

php artisan db:seed

Chiamerà tutti i seeders dal runmetodo e lo eseguirà.

Spero che tu capisca sul seeding del database in Laravel. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.

articoli Correlati

Fonte di registrazione: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More