Aprender Laravel desde cero: ruta paso a paso para principiantes
Para aprender Laravel desde cero conviene avanzar en un orden concreto: PHP, POO, Composer, HTTP, rutas, controllers, Blade, bases de datos, Eloquent, migraciones, validación, middleware, autenticación, APIs y testing. Laravel puede acelerar mucho el desarrollo, pero aprender únicamente comandos del framework sin entender lo que ocurre debajo termina creando dependencia de tutoriales.
¿Cómo aprender Laravel desde cero?
No empieces memorizando comandos de Artisan. Empieza comprendiendo PHP.
Después aprende programación orientada a objetos, Composer, HTTP y SQL. Con esa base puedes entrar a Laravel y estudiar routing, controllers, Blade, Eloquent, migraciones, validación y middleware.
El siguiente nivel consiste en crear aplicaciones completas con autenticación, permisos, APIs, testing, colas e integraciones.
La meta no debería ser “saber Laravel”, sino poder construir una aplicación Laravel que entiendas, puedas depurar y seas capaz de modificar sin depender de un tutorial.
La ruta completa para aprender Laravel
PHP
Sintaxis, funciones, arrays y errores.
POO
Clases, objetos, interfaces y dependencias.
Composer
Dependencias, namespaces y autoload.
HTTP
Request, response, rutas y métodos.
Laravel
Routing, controllers, Blade y Eloquent.
Proyecto real
Auth, permisos, API y testing.
¿Necesitas saber PHP antes de Laravel?
Sí, al menos a un nivel suficientemente sólido como para entender el código que Laravel ejecuta.
Esto no significa que debas convertirte primero en experto en PHP.
Pero deberías comprender con comodidad:
Variables y tipos.
Condiciones y ciclos.
Arrays.
Funciones.
Excepciones.
Clases y objetos.
¿Por qué?
Porque prácticamente todo lo que escribas dentro de Laravel sigue siendo PHP.
Si ves:
<?php
Route::get('/productos', function () {
return Producto::all();
});
hay funciones anónimas, llamadas estáticas, clases y objetos trabajando debajo de esa sintaxis.
Si todavía estás comenzando con PHP, fortalece primero los fundamentos
Variables, funciones, formularios, MySQL y POO.
Aprende POO antes de intentar comprender la arquitectura de Laravel
Laravel utiliza clases constantemente.
Controllers, models, middleware, jobs, events, listeners y otros componentes se construyen alrededor de objetos.
Clases
Debes entender cómo declarar propiedades, métodos y constructores.
Interfaces
Laravel utiliza contratos en distintas partes de su arquitectura.
Inyección de dependencias
Resulta especialmente importante cuando comienzas a utilizar el contenedor de servicios.
<?php
final class CrearPedido
{
public function __construct(
private CalculadorPrecio $calculador
) {}
}
Este tipo de código aparecerá una y otra vez dentro de aplicaciones Laravel.
Aprender POO en PHP →Composer es una pieza fundamental antes de entrar profundamente a Laravel
Laravel utiliza Composer para gestionar dependencias y autoloading.
Deberías comprender al menos:
composer.json.
composer.lock.
composer install.
composer update.
Namespaces.
Autoload PSR-4.
Sin esta base, cuando Laravel cargue clases, instale paquetes o resuelva dependencias, todo puede parecer “magia”.
Composer explica gran parte de cómo Laravel organiza paquetes y clases
Autoload, namespaces, dependencias y versiones.
Aprende HTTP antes de aprender rutas de memoria
Laravel es un framework web.
Eso significa que buena parte de su funcionamiento gira alrededor de solicitudes y respuestas HTTP.
Debes comprender qué significan:
Consultar información.
Enviar o crear información.
Actualizar según el contrato del recurso.
Modificar parcialmente.
Eliminar.
También necesitas códigos de estado
200, 201, 404, 403, 422 y 500 no son números decorativos.
Forman parte del contrato entre cliente y servidor.
Crea tu primer proyecto Laravel y explora su estructura
Después de instalar los requisitos adecuados para tu entorno, puedes crear un proyecto mediante Composer.
composer create-project laravel/laravel mi-proyecto
No empieces modificando archivos al azar.
Primero entiende la estructura.
app/
bootstrap/
config/
database/
public/
resources/
routes/
storage/
tests/
vendor/
No necesitas memorizar todos los directorios el primer día
Concéntrate inicialmente en:
routes/
app/
resources/
database/
Aprende routing antes de construir controllers complejos
Empieza con una ruta sencilla.
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return 'Mi primera aplicación Laravel';
});
Aquí puedes entender varias cosas a la vez.
Route::get() registra una ruta que responde a solicitudes GET.
/ representa la URL solicitada.
La función devuelve la respuesta.
Después utiliza parámetros
<?php
Route::get(
'/usuarios/{id}',
function (int $id) {
return 'Usuario ' . $id;
}
);
El objetivo todavía no es construir una gran aplicación.
Es comprender cómo Laravel relaciona una solicitud HTTP con código PHP.
Pasa de closures a controllers cuando las rutas empiecen a crecer
Puedes generar un controller.
php artisan make:controller ProductoController
Después, una ruta puede dirigir la solicitud hacia ese controller.
<?php
use App\Http\Controllers\ProductoController;
use Illuminate\Support\Facades\Route;
Route::get(
'/productos',
[ProductoController::class, 'index']
);
Y el controller:
<?php
namespace App\Http\Controllers;
final class ProductoController extends Controller
{
public function index()
{
return 'Listado de productos';
}
}
Aprende qué responsabilidad tiene el controller
No lo conviertas automáticamente en el lugar donde vive:
SQL, reglas de negocio, emails, pagos, archivos y toda la aplicación.
Aprende Blade para separar la presentación de la lógica del servidor
En lugar de devolver una cadena, el controller puede devolver una vista.
<?php
public function index()
{
return view('productos.index');
}
Y dentro de la vista:
<h1>Productos</h1>
<p>
Bienvenido al catálogo.
</p>
Después pasa datos a Blade
<?php
public function index()
{
$productos = [
'Notebook',
'Monitor',
'Teclado'
];
return view(
'productos.index',
compact('productos')
);
}
Y los recorres:
@foreach ($productos as $producto)
<p>
{{ $producto }}
</p>
@endforeach
Aprende SQL antes de esconderlo detrás de Eloquent
Laravel facilita muchísimo el trabajo con bases de datos.
Precisamente por eso puedes caer en el error de no aprender qué está ocurriendo debajo.
Antes de depender del ORM, deberías comprender:
SELECT.
INSERT.
UPDATE.
DELETE.
JOIN.
Índices.
Claves foráneas.
Transacciones.
Eloquent es más fácil de utilizar cuando entiendes qué ocurre en MySQL
Relaciones, consultas, índices y transacciones.
Aprende migraciones para que la estructura de datos forme parte del proyecto
Supongamos que necesitas una tabla de productos.
Puedes generar una migración y describir su estructura.
<?php
Schema::create('productos', function (Blueprint $table) {
$table->id();
$table->string('nombre');
$table->decimal(
'precio',
12,
2
);
$table->timestamps();
});
Luego puedes aplicar las migraciones.
php artisan migrate
Aprende también por qué existen
El verdadero beneficio no es solamente “crear tablas con PHP”.
Es mantener la evolución del esquema como parte versionable del proyecto.
Aprende modelos Eloquent empezando por operaciones sencillas
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
final class Producto extends Model
{
protected $fillable = [
'nombre',
'precio'
];
}
Consultar
$productos = Producto::query()
->orderByDesc('id')
->get();
Crear
$producto = Producto::create([
'nombre' => 'Monitor',
'precio' => 129990
]);
Buscar
$producto = Producto::find($id);
No intentes aprender todas las funciones del ORM de memoria.
Aprende primero el flujo CRUD y después añade relaciones, scopes, eager loading y consultas más complejas.
Construye un CRUD completo antes de saltar a arquitecturas complejas
Un CRUD bien construido permite practicar casi todos los fundamentos iniciales.
GET /productos
GET /productos/crear
POST /productos
GET /productos/{id}
GET /productos/{id}/editar
PUT /productos/{id}
DELETE /productos/{id}
Durante ese proyecto practicarás:
Routing.
Controllers.
Blade.
Models.
Migrations.
Validación.
El error es construirlo copiando código sin entender cómo conecta cada componente.
Añade validación antes de guardar información
El usuario puede enviar campos vacíos, tipos incorrectos o valores fuera de rango.
<?php
$datos = $request->validate([
'nombre' => [
'required',
'string',
'max:150'
],
'precio' => [
'required',
'numeric',
'min:0'
]
]);
Después puedes utilizar los datos validados.
Producto::create($datos);
Más adelante separa validaciones complejas
Cuando el proyecto crezca, no necesitas mantener todas las reglas dentro de cada controller.
Aprende relaciones después de dominar CRUD con una sola tabla
Una aplicación real rara vez está compuesta por tablas completamente aisladas.
Por ejemplo:
Usuario
↓
muchos
↓
Pedidos
Pedido
↓
muchos
↓
Productos
Uno a muchos
<?php
public function pedidos()
{
return $this->hasMany(Pedido::class);
}
Inversa
<?php
public function usuario()
{
return $this->belongsTo(Usuario::class);
}
Aquí comienzan a conectarse realmente tus conocimientos de SQL con Eloquent.
Aprende pronto qué es el problema N+1
Cuando empiezas con Eloquent, una línea de código puede parecer inocente y producir muchas consultas.
Imagina que cargas cien pedidos y después consultas el usuario de cada pedido por separado.
Podrías terminar realizando una consulta inicial y muchas consultas adicionales.
Eager loading
Laravel permite cargar relaciones de forma anticipada cuando corresponde.
$pedidos = Pedido::query()
->with('usuario')
->get();
Aprende middleware cuando necesites aplicar reglas alrededor de varias rutas
Imagina que varias páginas solo pueden ser utilizadas por usuarios autenticados.
No quieres repetir la misma comprobación manualmente en cada controller.
El middleware permite intervenir durante el ciclo de la solicitud.
Request
↓
Middleware
↓
Route
↓
Controller
↓
Response
Puede utilizarse para autenticación y otras tareas relacionadas con solicitudes.
Su función debería permanecer relacionada con el flujo HTTP.
Añade autenticación después de comprender rutas, controllers, datos y middleware
El login no debería ser lo primero que construyas cuando todavía no comprendes cómo funciona una solicitud Laravel.
Autenticación
Determina quién es el usuario.
Autorización
Determina qué puede hacer ese usuario.
Esta diferencia será fundamental cuando agregues:
Administradores.
Clientes.
Recursos privados.
Operaciones restringidas.
Aprende autorización antes de crear paneles con múltiples tipos de usuario
Imagina un sistema de proyectos.
Un usuario autenticado intenta acceder a:
GET /proyectos/157
La aplicación no debería permitir el acceso simplemente porque inició sesión.
También debe comprobar si ese proyecto pertenece al usuario o si posee los permisos necesarios.
Esta diferencia es una de las bases de cualquier aplicación multiusuario.
Después de una aplicación web tradicional, crea una API
Este paso te obliga a pensar de manera diferente.
Ya no devolverás necesariamente una vista Blade.
Puedes devolver JSON:
<?php
return response()->json([
'data' => $productos
]);
Aquí necesitas comprender:
Métodos HTTP.
Status codes.
JSON.
Autenticación.
Autorización.
Paginación.
Si REST todavía te parece abstracto, construye primero una API con PHP
Comprenderás mejor todo lo que Laravel automatiza.
Separa reglas de negocio cuando los controllers empiecen a crecer
Supongamos que crear un pedido requiere:
Comprobar stock.
Calcular descuentos.
Crear pedido.
Reservar inventario.
Emitir una notificación.
Todo eso dentro de una sola acción del controller comienza a ser difícil de mantener.
Puedes mover el proceso a una clase especializada.
<?php
final class CrearPedido
{
public function __construct(
private Inventario $inventario,
private PedidoRepository $pedidos
) {}
public function ejecutar(
DatosPedido $datos
): Pedido {
// Reglas del negocio.
return $pedido;
}
}
No necesitas crear este tipo de abstracción para cada línea de código.
Úsala cuando realmente ayude a separar responsabilidades.
Aprende testing antes de considerar terminado tu aprendizaje básico
Una aplicación no debería depender únicamente de que hagas clic manualmente en cada pantalla.
Prueba reglas
¿Un descuento se calcula correctamente?
Prueba endpoints
¿Un usuario sin sesión recibe el resultado esperado?
Prueba autorización
¿Un usuario puede editar datos ajenos?
Prueba validación
¿La aplicación rechaza datos incorrectos?
Empieza por los comportamientos importantes de tu proyecto.
Aprende colas cuando aparezcan tareas que no deberían bloquear al usuario
No necesitas estudiar queues en el primer día.
Tienen sentido cuando tu aplicación empieza a ejecutar procesos como:
Enviar correos.
Generar documentos.
Importar archivos.
Sincronizar APIs.
Procesar IA.
Si una operación puede demorarse varios segundos o minutos, probablemente no quieras mantener al navegador esperando todo ese tiempo.
Utiliza inteligencia artificial para acelerar el aprendizaje, no para saltarte los fundamentos
Un asistente puede ayudarte a explicar:
Una ruta.
Un controller.
Una migración.
Una relación Eloquent.
Un error.
También puede generar una primera implementación.
Pero hay una diferencia enorme entre:
"Hazme un CRUD completo en Laravel."
y:
"Explícame paso a paso
cómo fluye una petición POST
desde la ruta hasta el controller,
la validación, Eloquent
y la respuesta.
Después proponme un ejercicio
sin darme la solución completa."
El segundo enfoque te obliga a desarrollar comprensión.
Convierte la IA en tutor, revisor y compañero de debugging
No solamente en generador de código.
Una ruta de cuatro etapas para aprender Laravel
| Etapa | Temas | Proyecto |
|---|---|---|
| Etapa 1 | PHP, POO, Composer, HTTP | Pequeña app PHP sin framework |
| Etapa 2 | Routes, controllers, Blade | Catálogo sin base de datos |
| Etapa 3 | MySQL, migrations, Eloquent, validation | CRUD completo |
| Etapa 4 | Auth, permissions, APIs, testing | Aplicación multiusuario |
El tiempo depende de tu experiencia, horas de práctica y profundidad con que trabajes cada tema.
Gestor de tareas: tu primer proyecto Laravel
Empieza con un sistema pequeño.
Cada tarea puede tener:
Título.
Descripción.
Estado.
Fecha.
Construye:
Listado.
Creación.
Edición.
Eliminación.
Con eso practicarás routing, Blade, controllers, migrations, Eloquent y validation.
Sistema de reservas: empieza a trabajar con reglas reales
Ahora añade:
Usuarios.
Horarios.
Disponibilidad.
Estados.
Permisos.
Este proyecto te obliga a pasar de un CRUD sencillo a reglas de negocio.
Por ejemplo
No permitir dos reservas incompatibles para el mismo horario.
Esa regla ya no se resuelve simplemente aprendiendo un comando de Laravel.
Crea una API REST para separar frontend y backend
Construye endpoints para:
GET /api/productos
GET /api/productos/{id}
POST /api/productos
PATCH /api/productos/{id}
DELETE /api/productos/{id}
Después consume esa API desde JavaScript o una aplicación externa.
Esta etapa fortalece tus conocimientos de:
HTTP, JSON, recursos, autenticación y arquitectura.
¿Cuándo puedes decir que ya manejas Laravel a nivel inicial?
No cuando hayas terminado un curso.
Una mejor referencia es poder construir sin instrucciones detalladas:
Una ruta.
Un controller.
Una migración.
Un modelo.
Un CRUD.
Una relación.
Una validación.
Una prueba básica.
Y además poder explicar cómo se conectan esas piezas.
Qué puede frenar tu aprendizaje de Laravel
El mejor camino para aprender Laravel desde cero
Aprende primero PHP a un nivel suficiente.
Estudia POO e inyección de dependencias.
Comprende Composer, namespaces y autoload.
Aprende HTTP antes de memorizar rutas.
Domina routes, controllers y Blade.
Aprende SQL, migrations y Eloquent.
Construye un CRUD completo.
Añade relaciones, validación y middleware.
Después incorpora autenticación, autorización, APIs y testing.
Finalmente, estudia colas, caché, eventos e integraciones cuando un proyecto real los necesite.
No intentes aprender Laravel como una colección de comandos: aprende cómo fluye una aplicación desde la solicitud HTTP hasta la lógica, los datos y la respuesta.
Continúa desde los fundamentos correctos
Preguntas sobre aprender Laravel desde cero
Puedes seguir algunos tutoriales, pero es recomendable aprender primero PHP. Laravel utiliza funciones, clases, namespaces, interfaces, Composer y otras características del lenguaje constantemente.
Conviene conocer PHP, programación orientada a objetos, Composer, HTTP, SQL y bases de datos. No necesitas dominar todo, pero sí comprender los fundamentos.
Laravel puede parecer complejo si intentas aprender simultáneamente PHP, POO, Composer, SQL, HTTP y el propio framework. Con una base previa, muchos conceptos resultan mucho más claros.
Empieza por routing, controllers y Blade. Después añade migraciones, Eloquent, validación y relaciones. Más adelante incorpora middleware, autenticación, autorización, APIs y testing.
Sí. Eloquent facilita trabajar con bases de datos, pero comprender SQL, relaciones, JOIN, índices y transacciones te permite diseñar mejores consultas y detectar problemas de rendimiento.
Puedes empezar con un gestor de tareas o un CRUD de productos. Después avanza hacia un sistema de reservas, una aplicación multiusuario o una API REST con autenticación y permisos.
No necesitas dominar JavaScript para aprender el backend de Laravel. Sin embargo, JavaScript resulta útil para crear interfaces dinámicas, consumir APIs y avanzar hacia desarrollo web full stack.
Sí. La IA puede ayudarte a explicar código, generar ejercicios, revisar errores y proponer alternativas. Conviene utilizarla como apoyo al aprendizaje y verificar el código y la documentación en lugar de copiar soluciones completas sin comprenderlas.
No intentes aprender todo Laravel antes de crear tu primera aplicación
Aprende una pieza, úsala en un proyecto y después añade la siguiente: rutas, controllers, Blade, Eloquent, validación, permisos, APIs y testing. La comprensión aparece cuando esas piezas comienzan a trabajar juntas.
Volver a la guía de Laravel →