Actualizar un proyecto de Laravel 12 a Laravel 13
Actualiza paso a paso un proyecto real de Laravel 12 a Laravel 13, desde PHP 8.3 hasta los 2 cambios de seguridad de la caché y la sesión.
- Lecciones
- 8
- Lectura
- 125 min
- Nivel
- Intermedio
- Actualizado
- 01 El proyecto Laravel 12 de partida y la red de seguridad: tests y Larastan
- 02 composer why-not laravel/framework 13: PHP 8.3, Pest 4 y Tinker 3 antes que el framework
- 03 Cambiar PHP 8.2 por PHP 8.3 en Laravel Sail antes de actualizar a Laravel 13
- 04 Actualizar Pest 3 a Pest 4 (PHPUnit 12) y Tinker 3 con el proyecto en Laravel 12
Hola, bienvenido. Empezamos un nuevo curso en CursosDesarrolloWeb.es, en el que vamos a actualizar un proyecto real de Laravel 12 a Laravel 13, paso a paso, con sus tests y Larastan comprobando cada cambio.
La guía oficial dice que la actualización lleva 10 minutos, y para el código del proyecto es cierto. Pero Laravel 13 exige PHP 8.3, así que un proyecto que sigue en PHP 8.2 tiene que actualizar antes PHP a la versión 8.3, Pest a la 4 y Tinker a la 3. Además, los 2 cambios de seguridad de esta versión, en la caché y en la sesión, no llegan con composer update: si no los añades a mano, tu proyecto se queda sin ellos. Y Laravel 12 deja de recibir parches de seguridad en febrero de 2027.
Qué vamos a hacer
Vamos a trabajar sobre un proyecto de tickets de soporte con Breeze, Sanctum, Spatie Permission y Livewire. Está en GitHub, partiremos de su versión en Laravel 12 y lo iremos actualizando juntos, con un commit por paso. Este es el orden que seguiremos:
- Primero pondremos en marcha el proyecto y comprobaremos que sus tests, Larastan y Pint están en verde, porque serán los que nos avisen de cada fallo.
- Con
composer why-notveremos qué impide instalar Laravel 13, y por qué lo primero que bloquea la actualización es la versión de PHP. - Después actualizaremos PHP de la versión 8.2 a la 8.3 en Laravel Sail, todavía en Laravel 12, y dejaremos Rector configurado para que no haya que cambiarlo cuando lleguemos a Laravel 13.
- Con PHP 8.3 ya podremos actualizar Pest de la versión 3 a la 4 y Tinker de la versión 2 a la 3, también en Laravel 12.
- Con eso hecho, actualizaremos el proyecto a Laravel 13 cambiando una línea del archivo
composer.json, y revisaremos la guía oficial con nuestro código, empezando por el middleware de CSRF, que pasa a llamarsePreventRequestForgery. - Añadiremos a mano las 2 claves de seguridad de la caché y de la sesión, y verás qué hay que decidir sobre las sesiones abiertas de los usuarios antes de desplegar.
- Pasaremos Rector con el set de Laravel 13, que renombrará las referencias al middleware y pasará las propiedades de los modelos a atributos.
- Y al final actualizaremos Livewire de la versión 3 a la 4: Laravel 13 no lo exige, pero es un buen momento para hacerlo.
El stack
Al terminar el curso, el proyecto estará en Laravel 13, sobre PHP 8.3 y con Laravel Sail. Las comprobaciones se hacen con Pest 4, PHPUnit 12 y Larastan 3, y los cambios de código con Rector 2 y rector-laravel 2.7. Sanctum 4 y Spatie Permission 6 no cambian de versión, porque ya admiten Laravel 13, y Livewire pasa de la versión 3 a la 4. El proyecto está en GitHub con un commit por cada paso. Partiremos del tag laravel-12 y terminaremos en el tag laravel-13. Así podrás comparar el proyecto en cualquier momento con el commit que corresponde.
Lo que no cubre
Este curso no repasa las novedades de Laravel 13: para eso tienes el artículo Laravel 13: novedades, requisitos y breaking changes (se abre en una pestaña nueva). Tampoco actualiza PHP más allá de la versión 8.3, ni Pest a la versión 5, ni Spatie Permission a la 8, que son actualizaciones aparte y que Laravel 13 no exige. Y no usa la IA para actualizar: la guía oficial propone hacerlo con Laravel Boost, y aquí lo haremos a mano, para que sepas qué está haciendo la IA el día que se lo pidas. Si lo que buscas es la lista completa de cambios de la versión, la tienes en Cómo actualizar de Laravel 12 a Laravel 13: guía completa con breaking changes (se abre en una pestaña nueva).
Para quién es
Este curso es para ti si mantienes un proyecto Laravel 12 en producción y tienes que subirlo de versión, tanto si lo actualizaste desde una versión anterior como si nació ya en Laravel 12. Necesitas manejarte con Laravel, Composer, Git y Pest en tu día a día, y también con Docker y Laravel Sail, porque durante el curso cambiaremos la versión de PHP del contenedor. Si Sail no te suena, te recomiendo que antes pases por el curso Docker y Laravel Sail desde cero (se abre en una pestaña nueva). Y si tu proyecto sigue en una versión anterior, tienes los 2 cursos previos de esta serie: Actualizar un proyecto de Laravel 10 a Laravel 11 (se abre en una pestaña nueva) y Actualizar un proyecto de Laravel 11 a Laravel 12 (se abre en una pestaña nueva), que termina justo donde empieza este.
Así que, si te interesa, te espero dentro del curso. Espero que te haya gustado esta introducción. Un saludo.