Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Eloquent e Seeder in Laravel

Concludiamo il nostro approfondimento su Eloquent, l'ORM del framework PHP Laravel, con le procedure necessarie per inserire dati temporanei a scopo di test nel database tramite seeder.
Concludiamo il nostro approfondimento su Eloquent, l'ORM del framework PHP Laravel, con le procedure necessarie per inserire dati temporanei a scopo di test nel database tramite seeder.
Link copiato negli appunti

I seeder

I seeder rappresentano l'altra faccia della medaglia delle migration e si occupano dell'inserimento di dati temporanei nel database. Questi permettono di avere dei dati di test caricati sul database a scopo dimostrativo. A differenza di quanto accade con le migration, data la loro natura i dati inseriti dai seeder non devono rappresentare informazioni utili per il setup dell'applicazione.

Come per le migration è possibile creare un nuovo seeder tramite un'istruzione inviata da linea di comando sulla base della seguente sintassi:

php artisan make:seeder NomeDelSeeder

I seeder sono classi PHP ospitate nella cartella database/seeds che presentano un unico metodo run che dovrà contenere la logica per l'inserimento dei dati di test. Questi ultimi possono essere inseriti sia attraverso del codice ad hoc che tramite factory.

Per il primo caso è sufficiente sfruttare le API query builder o direttamente Eloquent per l'inserimento di nuovi record:

DB::table('my_first_table')->insert([
        'name' => str_random(10),
        'age' => rand(10,40)
    ]);

Nel caso fosse necessario inserire una mole di dati più corposa possiamo utilizzare le Model Factory.

Model Factory

Le Model Factory permettono di definire, per ciascun modello dell'applicazione, logiche per la definizione di oggetti partendo da dei modelli fake, cioè a solo scopo di test. Tramite la libreria Faker, inclusa direttamente in Laravel, sarà possibile creare oggetti sempre diversi in pochissimo tempo.

Le factory vengono definite all'interno della cartella denominata database/factories e sono composte di fatto da una singola callback, utile a definire la struttura dei modelli.

$factory->define(App\Album::class, function (Faker\Generator $faker) {
    return [
    'name' => $faker->name,
    'year' => $faker->year,
    'track_count' => rand(5,15)
    ];
});

Una volta definita la factory, sarà possibile invocarla all'interno del seeder tramite l'helper factory:

factory(App\Album::class, 50)->create(); //50 album creati con un unico comando.

Invocare i seeder

Per eseguire i seeder la prima cosa da fare è quella di aggiungere il riferimento all'interno della classe che funge da entry point: DatabaseSeeder. Grazie al metodo call possiamo aggiungere tanti seeder quanti ne desideriamo.

Una volta fatto ciò, possiamo lanciare il comando

php artisan seed

per invocare tutti i seeder configurati. Tramite l'istruzione

php artisan db:seed --class=MySeeder

possiamo poi limitare l'esecuzione ad un solo seeder.

Con questo capitolo si chiude la parte teorica dedicata a Eloquent, nel prossimo sfrutteremo le competenze acquisite per incrementare le funzionalità dell'applicazione "Biblios".


Ti consigliamo anche