Saltar al contenido principal

Base de datos

Laravel proporciona herramientas integradas para interactuar con bases de datos de manera estructurada y segura, principalmente a través de Eloquent ORM, migraciones, seeders y factories. Esto permite crear, leer, actualizar y eliminar registros sin escribir consultas SQL complejas.

Configuración de la base de datos

La conexión se configura 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

Laravel soporta múltiples motores de base de datos, incluyendo MySQL, PostgreSQL, SQLite y SQL Server.

Migraciones

Las migraciones permiten versionar la estructura de la base de datos:

php artisan make:migration create_usuarios_table

Ejemplo de migración:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsuariosTable extends Migration
{
public function up()
{
Schema::create('usuarios', function (Blueprint $table) {
$table->id();
$table->string('nombre');
$table->string('email')->unique();
$table->string('password');
$table->timestamps();
});
}

public function down()
{
Schema::dropIfExists('usuarios');
}
}

Ejecutar migraciones:

php artisan migrate

Modelos Eloquent

Los modelos representan las tablas de la base de datos y permiten interactuar con ellas:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Usuario extends Model
{
protected $fillable = ['nombre', 'email', 'password'];

public function tareas()
{
return $this->hasMany(Tarea::class);
}
}

Ejemplo de operaciones CRUD:

// Crear
$usuario = Usuario::create(['nombre'=>'Juan','email'=>'juan@mail.com','password'=>'1234']);

// Leer
$usuarios = Usuario::all();

// Actualizar
$usuario->update(['nombre'=>'Juan Pérez']);

// Eliminar
$usuario->delete();

Buenas prácticas y convenciones

  • Mantener la configuración sensible en el archivo .env.
  • Usar migraciones para versionar la base de datos y facilitar despliegues.
  • Definir relaciones entre modelos usando métodos Eloquent (hasMany, belongsTo).
  • Proteger campos sensibles como contraseñas usando mutators y hashing.
  • Evitar consultas SQL crudas cuando se pueda utilizar Eloquent para mantener coherencia y seguridad.