Allestire un db di test con Laravel

Spread the love

Una delle (molte) pregevoli caratteristiche di Laravel è la possibilità di allestire un database alimentandolo con dati di test (fake) che in Laravel è facilissima grazie ad una classe Faker scritta da François Zaninotto.

Dopo aver creato il file per la migrazione di una tabella Articles, Artisan ci mette a disposizione la funzionalità seeder cioè alimentatore:

$ php artisan make:seeder ArticlesTableSeeder

Questo comando costruisce la classe che servirà ad alimentare la tabella: sotto la directory /database/seeds troviamo la nuova classe dell’alimentatore del db:

use Illuminate\Database\Seeder; 
use App\Article; 

class ArticlesTableSeeder extends Seeder {
      /**
       * Run the database seeds.
       *
       * @return void
       */

      public function run()
      {
          Article::truncate();
          $faker = \Faker\Factory::create();
          // And now, let's create a few articles in our database:
          for ($i = 0; $i < 50; $i++) {
              Article::create([
                  'title' => $faker->sentence,
                  'body' => $faker->paragraph,
              ]);
          }
      } 
}

quindi facciamo girare Faker che alimenta con dati più o meno casuali la tabella

$ php artisan db:seed --class=ArticlesTableSeeder

Possiamo automatizzare il tutto al momento della creazione del database inserendo la chiamata ai metodi in fase di migrazione:

class DatabaseSeeder extends Seeder {
      public function run()
      {
          $this->call(ArticlesTableSeeder::class);
          $this->call(UsersTableSeeder::class);
           ...
      }
 }

Non resta che lanciare il comando

$ php artisan db:seed

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.