Laravel: qué es, cómo funciona y cómo aprenderlo
Laravel es un framework de PHP para construir aplicaciones web, APIs y sistemas backend utilizando una estructura más organizada que un proyecto formado únicamente por archivos PHP sueltos. Incluye herramientas para routing, controladores, acceso a bases de datos, validación, middleware, plantillas, colas, caché, testing y otras tareas habituales del desarrollo web.
¿Qué es Laravel?
Laravel es un framework de desarrollo web construido con PHP. Proporciona una estructura y un conjunto de herramientas para crear aplicaciones sin tener que resolver desde cero problemas comunes como routing, acceso a bases de datos, validación, sesiones, middleware o colas.
Laravel no reemplaza PHP. Está construido sobre PHP, por lo que comprender el lenguaje, programación orientada a objetos, Composer, HTTP y bases de datos facilita enormemente aprenderlo.
Puede utilizarse para crear paneles administrativos, SaaS, ecommerce, APIs, sistemas empresariales, aplicaciones internas y prácticamente cualquier backend web que encaje con su arquitectura.
Laravel reúne muchas tareas habituales del backend dentro de un mismo framework
Routing
Relaciona URLs y métodos HTTP con lógica.
Controllers
Organizan las entradas HTTP.
Blade
Sistema de plantillas para HTML.
Eloquent
ORM para trabajar con datos mediante modelos.
Middleware
Filtra y modifica solicitudes.
Artisan
Herramientas de línea de comandos.
Laravel se aprende mejor cuando ya comprendes PHP
Es posible seguir un tutorial de Laravel sin dominar PHP, pero rápidamente aparecerán conceptos que el framework da por sentados.
Por ejemplo, una ruta puede utilizar una función anónima, un controller es una clase, un servicio puede recibir dependencias por constructor y los paquetes se administran mediante Composer.
Laravel no elimina los fundamentos
Al contrario: construye encima de ellos.
Antes de profundizar, conviene entender:
Variables y funciones.
Arrays.
Clases y objetos.
Namespaces.
Composer.
HTTP y bases de datos.
Si PHP todavía te resulta confuso, fortalece primero el lenguaje
Funciones, formularios, POO, MySQL y Composer.
¿Qué problema resuelve un framework como Laravel?
Con PHP puro puedes construir prácticamente todos los componentes necesarios para una aplicación.
El problema aparece cuando cada proyecto necesita volver a decidir:
Cómo definir rutas.
Cómo organizar controllers.
Cómo validar solicitudes.
Cómo estructurar acceso a datos.
Cómo gestionar sesiones.
Cómo ejecutar tareas en background.
Laravel ofrece convenciones y herramientas para muchas de estas tareas.
Sigue siendo necesario comprender qué ocurre debajo de cada abstracción.
Composer forma parte del flujo natural de Laravel
Una forma de crear un proyecto Laravel es utilizar Composer.
composer create-project laravel/laravel mi-aplicacion
Después puedes entrar al proyecto:
cd mi-aplicacion
Y durante desarrollo puedes utilizar las herramientas proporcionadas por el framework y tu entorno local.
Laravel depende fuertemente del ecosistema de Composer
Paquetes, autoload, namespaces y dependencias.
Laravel organiza la aplicación en directorios con responsabilidades diferentes
Cuando abres un proyecto Laravel, ya no encuentras solamente un archivo index.php con toda la aplicación.
Aparecen directorios dedicados a componentes diferentes.
app/
bootstrap/
config/
database/
public/
resources/
routes/
storage/
tests/
vendor/
app/
Contiene buena parte del código de la aplicación.
routes/
Define cómo las solicitudes se relacionan con la aplicación.
database/
Puede contener migraciones, seeders y otros elementos relacionados con datos.
resources/
Incluye recursos utilizados para la presentación y otros assets del proyecto.
public/
Funciona como punto público de entrada de la aplicación.
Las rutas definen cómo responde Laravel a una URL
Una ruta sencilla puede responder directamente.
<?php
use Illuminate\Support\Facades\Route;
Route::get('/hola', function () {
return 'Hola desde Laravel';
});
Cuando un usuario realiza:
GET /hola
Laravel encuentra la ruta correspondiente y ejecuta su lógica.
Las rutas también pueden tener parámetros
<?php
Route::get(
'/productos/{id}',
function (int $id) {
return 'Producto: ' . $id;
}
);
Pero en aplicaciones mayores normalmente la ruta delega el trabajo a un controller.
Un controller ayuda a sacar lógica HTTP de los archivos de rutas
En lugar de colocar toda la aplicación dentro de closures, puedes dirigir la solicitud a una clase.
<?php
use App\Http\Controllers\ProductoController;
use Illuminate\Support\Facades\Route;
Route::get(
'/productos',
[ProductoController::class, 'index']
);
El controller:
<?php
namespace App\Http\Controllers;
final class ProductoController extends Controller
{
public function index()
{
return 'Listado de productos';
}
}
El controller no debería transformarse en una clase gigantesca
Su función suele relacionarse principalmente con la capa HTTP.
Las reglas complejas pueden delegarse a otros servicios o componentes.
Laravel suele asociarse con MVC, pero una aplicación real puede tener muchas más capas
MVC significa:
Model: representa datos y comportamiento relacionado.
View: representa la interfaz.
Controller: coordina solicitudes y respuestas.
Este modelo resulta útil para comenzar, pero una aplicación puede incorporar además:
servicios, jobs, policies, listeners, repositories, actions u otras abstracciones.
La arquitectura debería adaptarse al tamaño y complejidad del proyecto.
Blade permite construir vistas HTML utilizando un sistema de plantillas
Si Laravel también renderiza la interfaz, puedes utilizar Blade.
<h1>Productos</h1>
@foreach ($productos as $producto)
<article>
<h2>{{ $producto->nombre }}</h2>
<p>{{ $producto->precio }}</p>
</article>
@endforeach
Blade permite layouts, componentes, condicionales y otras herramientas para generar interfaces.
No estás obligado a utilizar Laravel como frontend
También puedes construir una API y consumirla desde una aplicación JavaScript u otro cliente.
Laravel proporciona varias herramientas para trabajar con bases de datos
El framework abstrae parte del trabajo que harías manualmente con PDO.
Pero comprender SQL, relaciones e índices sigue siendo muy importante.
Query Builder
Permite construir consultas mediante una API de PHP.
Eloquent
Permite representar tablas y relaciones mediante modelos.
Migraciones
Permiten versionar cambios en la estructura de la base de datos.
No uses Eloquent como excusa para no aprender SQL
JOIN, índices, transacciones y modelado siguen importando.
Eloquent representa registros mediante modelos PHP
Supongamos que tenemos una tabla de productos.
Podemos crear un modelo:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
final class Producto extends Model
{
protected $fillable = [
'nombre',
'precio'
];
}
Y consultar:
$productos = Producto::query()
->orderByDesc('id')
->get();
Esto evita escribir SQL directamente para muchas operaciones comunes.
Pero el SQL sigue existiendo debajo
Una consulta Eloquent mal diseñada también puede generar problemas de rendimiento.
Eloquent permite expresar relaciones entre modelos
Un usuario puede tener muchos pedidos.
Un pedido puede pertenecer a un usuario.
<?php
public function pedidos()
{
return $this->hasMany(Pedido::class);
}
Y en Pedido:
<?php
public function usuario()
{
return $this->belongsTo(Usuario::class);
}
Estas relaciones facilitan trabajar con datos conectados, pero debes comprender cómo se traducen a consultas.
Las migraciones permiten versionar la estructura de la base de datos
Sin migraciones, cambiar una base de datos puede depender de instrucciones manuales.
Laravel permite describir esos cambios mediante código.
<?php
Schema::create('productos', function (Blueprint $table) {
$table->id();
$table->string('nombre');
$table->decimal(
'precio',
12,
2
);
$table->timestamps();
});
Esto permite que el cambio forme parte del historial del proyecto.
El equipo puede aplicar el mismo cambio
En lugar de compartir solamente instrucciones SQL por mensajes o documentos.
Artisan automatiza tareas habituales de desarrollo
Laravel incluye una interfaz de línea de comandos.
Puedes utilizarla para generar componentes, ejecutar migraciones y realizar otras operaciones.
php artisan make:controller ProductoController
php artisan make:model Producto
php artisan migrate
Crear automáticamente una clase no garantiza que tenga una responsabilidad correcta.
Laravel incluye herramientas para validar solicitudes antes de utilizar sus datos
Imagina un formulario para crear productos.
<?php
$datos = $request->validate([
'nombre' => [
'required',
'string',
'max:150'
],
'precio' => [
'required',
'numeric',
'min:0'
]
]);
Ahora el resto de la lógica puede trabajar con un conjunto de datos que ya pasó determinadas reglas.
Validación no reemplaza reglas de negocio
Saber que un monto es numérico no significa automáticamente que una determinada operación esté permitida.
Comprender cómo atraviesa una solicitud la aplicación es más útil que memorizar comandos
Navegador / Cliente
↓
Solicitud HTTP
↓
Laravel
↓
Middleware
↓
Route
↓
Controller
↓
Servicio / lógica
↓
Modelo / Base de datos
↓
Response
↓
Cliente
No todas las aplicaciones tendrán exactamente estas capas.
Pero entender el recorrido te ayuda enormemente cuando necesitas depurar un problema.
Middleware permite ejecutar lógica alrededor de una solicitud HTTP
Antes de llegar a un controller puede ser necesario comprobar:
Si existe una sesión válida.
Si el usuario está autenticado.
Si una solicitud cumple determinada condición.
Si se necesita modificar la respuesta.
Esta idea ayuda a evitar repetir la misma lógica en múltiples controllers.
Utilízalo para responsabilidades relacionadas con el ciclo de la solicitud.
Laravel puede resolver dependencias automáticamente mediante su contenedor
En PHP ya vimos que una clase puede recibir dependencias en el constructor.
<?php
final class CrearPedido
{
public function __construct(
private CalculadorPrecio $calculador
) {}
}
Laravel puede encargarse de construir determinados objetos y resolver sus dependencias.
Esto se relaciona directamente con POO
Interfaces, composición e inyección de dependencias dejan de ser conceptos teóricos y aparecen constantemente dentro del framework.
Laravel se entiende mucho mejor cuando ya sabes interfaces e inyección de dependencias
Clases, composición y contratos.
Laravel puede ayudarte con autenticación, pero debes distinguirla de autorización
Autenticación responde: ¿quién es este usuario?
Autorización responde: ¿qué puede hacer?
Una persona puede iniciar sesión correctamente y aun así no tener permiso para:
Editar otro usuario.
Eliminar un pedido.
Acceder a administración.
Consultar información privada.
Laravel dispone de mecanismos para organizar este tipo de permisos, pero la aplicación sigue necesitando definir correctamente las reglas.
Laravel puede utilizarse como backend de una API REST
El framework puede recibir solicitudes desde:
Frontend JavaScript.
Aplicaciones móviles.
Sistemas empresariales.
Servicios externos.
Y devolver JSON en lugar de HTML.
<?php
return response()->json([
'data' => $productos
]);
Laravel no reemplaza HTTP
Sigue siendo necesario comprender GET, POST, PATCH, DELETE, códigos de estado, autenticación y CORS.
Aprende cómo funciona una API en PHP para comprender mejor lo que Laravel abstrae
HTTP, JSON, PDO, autenticación y errores.
Una petición web no debería esperar indefinidamente por tareas pesadas
Algunas operaciones pueden ejecutarse después de responder al usuario.
Por ejemplo:
Enviar emails.
Procesar archivos grandes.
Generar reportes.
Sincronizar sistemas externos.
Procesar tareas de IA.
Laravel dispone de herramientas para representar y ejecutar jobs mediante colas.
Esto mejora la experiencia del usuario
La aplicación puede responder rápidamente mientras el trabajo continúa fuera del ciclo principal de la petición.
Los eventos permiten reaccionar a algo que ocurrió sin acoplar todo a una sola clase
Imagina que un pedido fue pagado.
A partir de ese hecho podrían ocurrir varias acciones:
Enviar comprobante.
Actualizar inventario.
Notificar a logística.
Registrar analytics.
Un diseño orientado a eventos puede separar estas reacciones del proceso principal.
Utilízalos cuando ayuden a reducir acoplamiento y representar eventos reales del sistema.
Laravel incluye abstracciones para almacenar temporalmente información costosa de obtener
No todo debería consultarse o calcularse nuevamente en cada petición.
El caché puede ser útil para:
Consultas costosas.
Resultados externos.
Configuraciones.
Información que cambia poco.
Pero también necesitas decidir cuándo invalidar la información almacenada.
Rendimiento y consistencia deben evaluarse juntos.
Laravel ayuda con seguridad, pero el framework no puede decidir correctamente por ti
El framework incorpora mecanismos que ayudan frente a distintos problemas comunes.
Pero tú sigues siendo responsable de decisiones como:
Qué usuario puede ver un recurso.
Qué campos pueden modificarse.
Qué información se expone.
Cómo almacenar secretos.
Qué datos externos son confiables.
El ORM no reemplaza autorización
Que una consulta pueda recuperar un registro no significa que el usuario deba poder verlo.
Validación no reemplaza permisos
Un dato puede tener formato correcto y aun así representar una operación no permitida.
Laravel facilita probar aplicaciones a distintos niveles
Un proyecto puede incluir pruebas para:
Reglas de negocio.
Rutas HTTP.
Autenticación.
Permisos.
Persistencia.
Un test no demuestra que todo el sistema sea perfecto
Pero sí puede documentar comportamiento esperado y detectar regresiones.
Uno de los errores típicos al empezar con un ORM es olvidar cuántas consultas realmente se ejecutan
Un código puede parecer simple desde PHP y provocar muchas consultas SQL.
Por ejemplo, cargar cien pedidos y después consultar el usuario de cada uno individualmente puede producir un número innecesario de consultas.
Este tipo de problema suele conocerse como N+1
Los ORM ofrecen mecanismos para cargar relaciones de forma más eficiente.
Aprende a inspeccionar qué SQL está generando tu aplicación.
Laravel no obliga a colocar toda la lógica dentro de controllers y modelos
Supongamos que crear un pedido requiere:
Validar stock.
Calcular total.
Guardar pedido.
Reservar inventario.
Generar evento.
Esa operación puede representarse mediante un servicio o caso de uso propio.
<?php
final class CrearPedido
{
public function __construct(
private Inventario $inventario,
private Pedidos $pedidos
) {}
public function ejecutar(
DatosPedido $datos
): Pedido {
// Reglas del proceso.
return $pedido;
}
}
De esta manera el controller puede concentrarse en HTTP y la lógica importante queda separada.
Laravel también puede consumir APIs y servicios externos
Una aplicación puede conectarse con:
Pasarelas de pago.
Servicios de email.
CRM.
ERP.
APIs de inteligencia artificial.
Aquí vuelven a ser importantes conceptos que ya aprendimos en PHP: HTTP, JSON, errores, timeouts, autenticación y validación.
Laravel también puede convertirse en backend de aplicaciones con inteligencia artificial
Usuarios, colas, datos, APIs y consumo.
Proyectos para aprender Laravel de verdad
Sistema de tareas
Usuarios, CRUD, relaciones, validación y permisos.
Sistema de reservas
Horarios, estados, usuarios, disponibilidad y notificaciones.
API de productos
Routing, controllers, recursos, autenticación y testing.
Panel administrativo
Roles, filtros, métricas, formularios y datos.
Mini SaaS
Usuarios, equipos, planes, límites y procesos en background.
Si todo cabe cómodamente en dos archivos, muchas abstracciones del framework todavía no mostrarán su verdadero valor.
Laravel no sustituye PHP: es una forma estructurada de construir con PHP
| Necesidad | PHP puro | Laravel |
|---|---|---|
| Script pequeño | Muy directo | Puede ser excesivo |
| Routing complejo | Debes estructurarlo | Integrado |
| ORM | No incluido como framework | Eloquent |
| Migraciones | Debes implementarlas o añadir herramienta | Integradas |
| Queues | Debes diseñarlas | Ecosistema integrado |
| Control absoluto | Máximo | Más convenciones |
| Aplicación grande | Exige diseñar estructura | Base organizada |
Saber Laravel sin entender PHP puede hacerte dependiente de recetas.
Saber PHP y después Laravel te permite entender mejor qué está resolviendo cada herramienta.
¿Qué deberías saber además de Laravel para trabajar profesionalmente?
Aprender comandos de Artisan no es suficiente.
Un perfil profesional debería comprender progresivamente:
PHP y POO.
Composer.
SQL y bases de datos.
HTTP y APIs.
Git.
Testing.
Seguridad.
Debugging.
Laravel debería complementar tu perfil PHP, no reemplazar los fundamentos
Backend, SQL, APIs, Git y arquitectura.
La IA puede acelerar Laravel, pero también puede generar código que parece correcto y no encaja con tu aplicación
Un asistente puede generar:
Routes.
Controllers.
Migraciones.
Models.
Tests.
Pero debes revisar:
autorización, consultas, relaciones, dependencias, versiones y arquitectura.
Comprueba documentación y ejecuta los tests antes de aceptar la implementación.
En qué orden aprender Laravel
PHP
Funciones, tipos y errores.
POO
Clases, interfaces y dependencias.
Composer
Paquetes y autoload.
Routing
URLs y HTTP.
Controllers
Coordina solicitudes.
Blade
Renderiza vistas.
SQL + Eloquent
Datos y relaciones.
Migrations
Versiona estructura.
Auth + Middleware
Usuarios y acceso.
Testing + APIs
Lleva el proyecto a nivel profesional.
Qué evitar al aprender Laravel
Laravel cobra sentido cuando tus aplicaciones PHP necesitan estructura y herramientas que puedas reutilizar
Aprende PHP antes de depender del framework.
Comprende routing y el ciclo de una solicitud.
Utiliza controllers para organizar la capa HTTP.
Aprende SQL aunque utilices Eloquent.
Utiliza migraciones para versionar cambios de datos.
Comprende middleware, autenticación y autorización.
Aprende colas, caché y eventos cuando el proyecto realmente los necesite.
Añade testing antes de depender únicamente de pruebas manuales.
Laravel no elimina la necesidad de saber PHP: hace que los fundamentos de PHP, POO, Composer, HTTP y SQL aparezcan juntos dentro de una arquitectura mucho más completa.
Bases que necesitas para dominar Laravel
Preguntas frecuentes sobre Laravel
Laravel es un framework construido con PHP para desarrollar aplicaciones web, APIs y sistemas backend. Proporciona herramientas para routing, bases de datos, validación, middleware, plantillas, colas y testing.
Es muy recomendable. Laravel utiliza clases, interfaces, namespaces, Composer y otras características de PHP. Comprender primero los fundamentos evita depender únicamente de tutoriales y recetas.
Puede utilizarse para construir sistemas web, paneles administrativos, SaaS, APIs REST, aplicaciones empresariales, ecommerce e integraciones backend.
Eloquent es el ORM integrado en Laravel. Permite representar registros mediante modelos PHP y trabajar con consultas y relaciones utilizando una API orientada a objetos.
Las migraciones permiten describir mediante código cambios en la estructura de la base de datos. Esto facilita versionar y reproducir dichos cambios entre entornos.
Sí. Laravel puede recibir solicitudes HTTP, validar datos, autenticar usuarios, consultar bases de datos y devolver respuestas JSON para aplicaciones web, móviles u otros sistemas.
No. Laravel está construido sobre PHP. Utilizar Laravel significa programar en PHP utilizando una estructura, convenciones y herramientas proporcionadas por el framework.
Puede ser una excelente herramienta una vez que comprendes PHP, HTTP, SQL, POO y Composer. Laravel permite aplicar esos conocimientos dentro de aplicaciones estructuradas y proyectos más grandes.
Laravel empieza a tener sentido cuando ya puedes construir con PHP y quieres organizar aplicaciones más grandes
Aprende primero PHP, POO, Composer, SQL y HTTP. Después utiliza Laravel para integrar routing, Eloquent, migraciones, middleware, APIs, colas y testing dentro de una arquitectura coherente.
Fortalecer primero PHP →