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
publicfunction 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