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.