Ultima Laravel
Share
Explore
Base de datos

icon picker
Seeders

Seeders (o sembradores)

Los seeders son clases usadas para:
Rellenar las tablas con datos de prueba
Cargar las tablas con datos iniciales.
Creación con artisan:
php artisan make:seeder StudySeeder
Los seeders tienen un método run() donde se registra el contenido de los registros a insertar. Puede usarse sintaxis de Query Builder o de Eloquent

Ejemplo:
use Illuminate\Database\Seeder; use App\Review; class StudiesSeeder extends Seeder { public function run() { //con eloquent Study::create([ 'code' => 'IFC303', 'name' => 'Desarrollo de Aplicaciones Web', 'abreviation' => 'DAW' ]);
//lo mismo con query builder DB::table('studies')->insert([ 'code' => 'IFC303', 'name' => 'Desarrollo de Aplicaciones Web', 'abreviation' => 'DAW ]); } }
El orden en que se ejecutan los seeders se establece manualmente. Debe rellenarse el método run() de la clase DatabaseSeeder ubicada en database/seeds
public function run() { $this->call(StudySeeder::class); $this->call(ModuleSeeder::class); }
Su ejecución es desde artisan:
Modo general
php artisan db:seed
Junto a las migraciones:
php artisan migrate:refresh --seed
De forma individual
php artisan db:seed --class=ModuleSeeder
Ejemplo
Poblando una base de datos desde migration
Primero vamos a la carpeta app/database/seedsy creamos un fichero PoblarUsuariosSeeder.php
php artisan make:seeder PoblarUsuarios
Esta clase debe de extender de Seeder
class PoblarUsuariosSeeders extends Seeder { //put your code here public function run() { //Usando el modelo creamos un nuevo registro. Tambien se puede hacer con el método save Usuario::create(array( 'usuario' => 'manolo', 'email' => 'admin@admin.com', 'password' => Hash::make('manolo') // Hash::make() nos va generar una cadena con nuestra contraseña encriptada }}
Ahora nos queda ejecutarla; Para ello vamos a modificar la clase DataBaseSeeders.php que tenemos en /app/database/seeds. Esta clase se va a encargar de invocar al resto de clases creadas para poblar tablas
Para ello añadimos una línea para que se llame a la clase que previamente hemos creado.
$this->call('PoblarUsuariosSeeders');
Si tuviéramos varias clases, le pasaríamos al método call un array en lugar de una clase
$this->call(['PoblarUsuariosSeeders', 'Clase2Seeder,...,'ClaseNSeeder']);
Quedándonos el código de la clase
class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Eloquent::unguard(); $this->call('PoblarUsuariosSeeders'); }}
Share
 
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.