Per farlo si usano i Seed, delle classi fatte appossa che utilizzano, come vedremo, la Factory Faker.
Per farlo occorre creare il Seed per la tabella che vogliamo riempire.
php artisan make:seed SeedUserTable
Laravel fornisce già una Factory per la tabella USER che si trova in ModelFactory.php dentro factories. Sarà qui che creeremo le nostre factory.
Dato che quella per User esiste già, ci basta aprire il file SeedUserTable che abbiamo creato e implementare il metodo:
public function run() { DB::statement("SET FOREIGN_KEY_CHECKS=0;"); User::truncate(); factory(App\User::class,30)->create(); //create and save on DB $users = factory(App\User::class,30)->make(); //create but not save on DB }
Come si vede, occorre per prima cosa disabilitare il check sulle foreign key altrimenti la truncate non verrebbe eseguita.
Poi richiamiamo la factory con lo stesso nome che trovate nel ModelFactory ovvero App\User::class
Diciamo quindi di creare 30 utenti.
L'istruzione successiva, non necessaria, serve solo a mostrare come sia possibile creare utenti al volo senza persisterli su DB tramite il metodo make. Tale sistema riempie la variabile users che potebbe essere usata per altri scopi.
A questo punto è possibile lanciare la singola Seed per User o inserirla all'interno del seed principale DatabaseSeeder.php che sarà lanciata quando si lancia il seed senza parametri.
public function run() { $this->call(SeedUserTable::class); }
Se si vuole lanciare solo il seeder creato, basta usare il comando:
php artisan db:seed --class=SeedUserTable
Altrimenti se si ometterà il parametro class, verrà lanciato il DatabaseSeeder e tutti i seeder che avrete configurato dentro il metodo run.
Nessun commento:
Posta un commento