🎃 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 11 a Laravel 12

Actualiza paso a paso un proyecto real de Laravel 11 a Laravel 12, desde las herramientas de test hasta la configuración de Laravel 12.

Laravel12 PHP8.2 Laravel Sail1.69 Composer2.10 Pest3 PHPUnit11 Larastan3 PHPStan2 Rector2 rector-laravel2.5 Laravel Sanctum4 Spatie Permission6 Livewire3
Lecciones
9
Lectura
136 min
Nivel
Intermedio
Actualizado
actualizar-proyecto-laravel-11-a-12 · proyecto final
Archivos
.env.example L7
app/Http/Controllers/
TicketController.php L9
app/Models/
Attachment.php L5
Ticket.php L5
+10 archivos más
Lecciones
  1. 01 El proyecto Laravel 11 de partida y la red de seguridad: tests y Larastan
  2. 02 composer why-not laravel/framework 12: qué bloquea la actualización y en qué orden se hace
  3. 03 Actualizar Pest 2 a Pest 3 (PHPUnit 11) con el proyecto en Laravel 11
  4. 04 Actualizar Larastan 2 a Larastan 3 con PHPStan 2: por qué Rector 2 entra a la vez
+5 lecciones más

Hola, bienvenido. Empezamos un nuevo curso en CursosDesarrolloWeb.es, en el que vamos a actualizar un proyecto real de Laravel 11 a Laravel 12, paso a paso, con sus tests y Larastan comprobando cada cambio.

La guía oficial dice que la actualización lleva 5 minutos, y para el código del proyecto es cierto. Pero en un proyecto real también hay que actualizar Pest y Larastan de la versión 2 a la 3, y Rector de la versión 1 a la 2, que tiene que subir a la vez que Larastan. Y Laravel 11 no recibe parches de seguridad desde marzo de 2026, así que, tarde o temprano, un proyecto en Laravel 11 hay que actualizarlo.

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 11 y lo iremos actualizando juntos, con un commit por paso. Este es el orden que seguiremos:

  • Primero pondremos el proyecto en marcha con sus tests, Larastan y Pint en verde, y con composer audit veremos los 4 avisos de seguridad que Laravel 11 ya no va a corregir.
  • Antes de cambiar nada, composer why-not nos dirá qué impide instalar Laravel 12, y descubriremos que uno de los bloqueos es Rector, que la guía oficial no menciona.
  • Después actualizaremos Pest y Larastan de la versión 2 a la 3, todavía en Laravel 11, y verás el error con el que Composer avisa de que Larastan 3 no se puede instalar sin actualizar también Rector.
  • Larastan 3 encontrará 7 errores que Larastan 2 no veía, y la mayoría los corregirá una regla de Rector.
  • Con eso hecho, actualizaremos el proyecto a Laravel 12, y composer audit dejará de mostrar avisos por primera vez en el curso.
  • Pondremos al día los archivos de configuración con los del esqueleto de Laravel 12. Verás cómo config:publish --force sobrescribe sin avisar lo que el proyecto tenía en esos archivos, por qué 74 tests se ponen en rojo sin haber cambiado el archivo .env y qué pasa con los adjuntos que ya existen cuando el disco local cambia de carpeta.
  • Y al final, pasaremos Rector con el set de Laravel 12 para aplicar los cambios mecánicos del código, y verás por qué una de sus reglas no llega a ejecutarse.

El stack

Al terminar el curso, el proyecto estará en Laravel 12, sobre PHP 8.2, con Laravel Sail y Composer 2.10. Las comprobaciones pasan a Pest 3 con PHPUnit 11 y a Larastan 3 con PHPStan 2, y los cambios de código se hacen con Rector 2 y rector-laravel 2.5. Sanctum 4, Spatie Permission 6 y Livewire 3 no cambian de versión, porque ya admiten Laravel 12. El proyecto tiene en GitHub un commit por cada paso. Partiremos del tag laravel-11 y terminaremos en el tag laravel-12. Así podrás comparar el proyecto en cualquier momento con el estado que corresponde.

Lo que no cubre

Este curso no repasa las novedades de Laravel 12: para eso tienes el artículo Novedades en Laravel 12 (se abre en una pestaña nueva). Tampoco cambia Breeze por los starter kits nuevos, porque Breeze sigue funcionando en Laravel 12, ni actualiza PHP, ni Livewire a la versión 4, ni Pest a la 4, ni Spatie Permission a la 7, que son actualizaciones aparte y Laravel 12 no las exige. Y si lo que buscas es la lista completa de cambios de la versión, la tienes en Actualiza tus proyectos de Laravel 11 a Laravel 12: guía completa (se abre en una pestaña nueva).

Para quién es

Este curso es para ti si mantienes un proyecto Laravel 11 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 11. Necesitas manejarte con Laravel, Composer, Git y Pest, y también con Laravel Sail, porque todo se ejecuta en sus contenedores. 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 Laravel 10, empieza por Actualizar un proyecto de Laravel 10 a Laravel 11 (se abre en una pestaña nueva), que termina 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

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