Base de datos
Lumen facilita la interacción con bases de datos mediante Eloquent ORM y soporte para consultas SQL directas, permitiendo crear, leer, actualizar y eliminar registros de manera sencilla y estructurada.
Configuración de la base de datos
La configuración se realiza en el archivo .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nombre_base
DB_USERNAME=usuario
DB_PASSWORD=contraseña
En bootstrap/app.php, se habilita Eloquent:
$app->withEloquent();
Esto permite utilizar los modelos y aprovechar todas las funcionalidades del ORM.
Creación de modelos
Los modelos representan tablas de la base de datos y se ubican en app/Models. Por ejemplo, un modelo Usuario:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Usuario extends Model
{
protected $table = 'usuarios'; // Nombre de la tabla
protected $fillable = ['nombre', 'email', 'edad']; // Campos asignables masivamente
}
Migraciones
Lumen permite crear y ejecutar migraciones para mantener la estructura de la base de datos sincronizada:
php artisan make:migration crear_tabla_usuarios --create=usuarios
php artisan migrate
Dentro del archivo de migración se definen los campos de la tabla:
Schema::create('usuarios', function (Blueprint $table) {
$table->id();
$table->string('nombre');
$table->string('email')->unique();
$table->integer('edad')->nullable();
$table->timestamps();
});
Consultas con Eloquent
Eloquent facilita operaciones CRUD:
// Crear un usuario
Usuario::create(['nombre' => 'Juan', 'email' => 'juan@mail.com', 'edad' => 25]);
// Obtener todos los usuarios
$usuarios = Usuario::all();
// Actualizar un usuario
$usuario = Usuario::find(1);
$usuario->edad = 26;
$usuario->save();
// Eliminar un usuario
Usuario::destroy(1);
Consultas SQL directas
Si se requiere más control, se pueden ejecutar consultas SQL directas:
$usuarios = DB::select('SELECT * FROM usuarios WHERE edad > ?', [18]);
Buenas prácticas y convenciones en la base de datos
- Definir correctamente los campos
fillableoguardeden los modelos para evitar asignación masiva insegura. - Usar migraciones para versionar la base de datos y facilitar despliegues.
- Mantener modelos delgados, delegando lógica compleja a servicios o repositorios.
- Usar Eloquent cuando sea suficiente y consultas SQL directas solo cuando sea necesario por rendimiento.
- Aplicar índices y claves foráneas según la estructura de los datos para optimizar consultas.