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.