🎃 12 meses por 75 €

El plan anual a mitad de precio hasta el 31 de octubre.

Aprovechar la oferta

🎃 Halloween: 12 meses por 75 €

Plan anual a mitad de precio, para altas y renovaciones. Solo hasta el 31 de octubre.
Aprovechar la oferta
Saltar al contenido
Curso escrito

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.

Laravel13 PHP8.3 Laravel Sail1.69 Pest4 PHPUnit12 Larastan3 Rector2 rector-laravel2.7 Livewire4 Laravel Sanctum4 Spatie Permission6
Lecciones
8
Lectura
125 min
Nivel
Intermedio
Actualizado
actualizar-proyecto-laravel-12-a-13 · proyecto final
Archivos
app/Console/Commands/
CloseStaleTickets.php L7
app/Models/
Attachment.php L7
Ticket.php L7
TicketReply.php L7
+8 archivos más
Lecciones
  1. 01 El proyecto Laravel 12 de partida y la red de seguridad: tests y Larastan
  2. 02 composer why-not laravel/framework 13: PHP 8.3, Pest 4 y Tinker 3 antes que el framework
  3. 03 Cambiar PHP 8.2 por PHP 8.3 en Laravel Sail antes de actualizar a Laravel 13
  4. 04 Actualizar Pest 3 a Pest 4 (PHPUnit 12) y Tinker 3 con el proyecto en Laravel 12
+4 lecciones más

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-not veremos 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 llamarse PreventRequestForgery.
  • 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.

Temario

El curso, lección a lección

8 lecciones · 125 min
Busca en el texto, el código y los comandos de todas las lecciones Solo para suscriptores