Seeders de Base de Datos
Database Seeding
Los seeders de base de datos permiten insertar datos iniciales de prueba en tu base de datos. Esto es particularmente útil para:
- Pruebas de desarrollo
- Pre-poblar tablas que requieren datos iniciales
Ubicación y Estructura
Los seeders se almacenan en el directorio database/seeds. El método run de la clase DatabaseSeeder es el punto de entrada, desde donde puedes:
- Ejecutar métodos privados dentro de la clase
- Llamar a otros archivos/clases de seeders
Comandos Artisan Disponibles
Puedes utilizar los siguientes comandos para trabajar con seeders:
# Crear un nuevo seeder
php artisan make:seeder UsersTableSeeder
# Ejecutar todos los seeders
php artisan db:seed
# Ejecutar un único seeder
php artisan db:seed --class=SeederAEjecutar
# Refrescar la base de datos y sembrar
php artisan migrate:refresh --seed
Ejemplos de Implementación
La Clase DatabaseSeeder
class DatabaseSeeder extends Seeder
{
public function run()
{
// Llamar a otro archivo seeder
$this->call(UserTableSeeder::class);
// Mostrar información en la consola
$this->command->info('¡Tabla de usuarios sembrada!');
}
}
Implementación del UserTableSeeder
class UsersTableSeeder extends Seeder
{
public function run()
{
// Limpiar la tabla de usuarios
DB::table('users')->delete();
// Insertar un nuevo registro
DB::table('users')->insert([
'name' => 'NombreUsuario',
'email' => 'nombre@dominio.com',
'password' => 'contraseñasegura'
]);
// Nota: usa el método insertGetId() para obtener el ID asignado
}
}
Query Builder
Laravel proporciona un conjunto robusto de herramientas para interactuar con tu base de datos:
Características Principales
- Compatible con múltiples bases de datos soportadas por Laravel
- Sintaxis clara y legible
- Protección contra inyección SQL
Uso Básico
use Illuminate\Support\Facades\DB;
// Consulta básica
$users = DB::table('users')->get();
// Iterar resultados
foreach($users as $user) {
echo $user->name;
}
Métodos Comunes
// Obtener un único registro
$user = DB::table('users')->where('name', 'John')->first();
// Ordenar y agrupar resultados
$users = DB::table('users')
->orderBy('name', 'desc')
->groupBy('count')
->having('count', '>', 100)
->get();
Nota: Para más información sobre operaciones adicionales como join, insert, update, delete, consulta la documentación oficial de Laravel.