Saltar al contenido principal

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 fillable o guarded en 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.