Saltar al contenido principal
En octubre de 2026 llegaron funciones para controlar cómo se expresan las peticiones, a dónde van las lecturas de la base de datos y cómo se ejecutan las tareas programadas en varios servidores. Laravel Cloud simplificó el envío de correo y la configuración de comandos programados, y Forge facilitó el seguimiento de las actualizaciones de seguridad de PHP y de los fallos de aprovisionamiento. Esta página es un registro mensual basado en la entrada oficial del blog “Laravel October Product Updates”, publicada el 4 de noviembre, y en las entradas de octubre del changelog oficial del Framework. Las fuentes primarias se revisaron el 7 de noviembre de 2026, y la sección del Framework cubre solo Laravel 13. No incluye las versiones de noviembre. Fuentes:

Laravel Framework

Versiones publicadas en octubre

Además de las principales novedades del changelog oficial, se comprobaron las fechas y las versiones en las notas de versión. A continuación se detallan los nueve elementos del changelog oficial. Para correcciones menores y cambios de dependencias, consulta cada nota de versión.

Definir búsquedas con cuerpo de petición mediante rutas QUERY

En v13.35.0 se añadió Route::query(), compatible con el método HTTP QUERY. Puedes definir rutas que reciben las condiciones de búsqueda en el cuerpo de la petición en lugar de la cadena de consulta de GET.
Route::any() también coincide con las peticiones QUERY, y la lista de rutas reconoce este método. El SearchProductsController de arriba representa un controlador invocable de tu aplicación que implementa la búsqueda.
Las rutas QUERY del grupo de middleware web están sujetas a la verificación CSRF. No asumas que puedes omitir la verificación como en GET por tratarse de una búsqueda. Envía el token CSRF.
Fuente principal: Register QUERY Routes, routing.md oficial de Laravel 13. Páginas relacionadas: Rutas, Protección CSRF

Evitar lecturas obsoletas también en peticiones posteriores a una escritura

En bases de datos con lectura y escritura separadas, una lectura justo después de una actualización puede ir a una réplica de lectura que aún no se ha sincronizado. La opción existente sticky solo cubre la misma petición. El middleware PreventStaleDatabaseReads de v13.38.0 protege además las peticiones posteriores de la misma sesión durante un periodo. En bootstrap/app.php, importa Illuminate\Foundation\Http\Middleware\PreventStaleDatabaseReads y añádelo dentro del callback de withMiddleware() con $middleware->web(append: [PreventStaleDatabaseReads::class]);. No se activa automáticamente. El middleware registra en la sesión la hora de las escrituras en la conexión de base de datos predeterminada. Por defecto, envía las lecturas de esa conexión a la base de datos de escritura durante 2 segundos tras una escritura. Puedes cambiar el periodo registrando, por ejemplo, PreventStaleDatabaseReads::for(5) en lugar de la clase. Como usa la sesión, debe ejecutarse después de StartSession. No cambia las lecturas de otras sesiones ni de otras conexiones de base de datos, y tampoco detecta cuándo termina de sincronizarse la réplica. Fuente principal: Avoid Stale Reads After Database Writes, database.md oficial de Laravel 13. Páginas relacionadas: Base de datos, Sesión

Leer de la base de datos de escritura solo en operaciones concretas

Connection::usingWritePdo(), añadido también en v13.38.0, cambia el destino de lectura de la conexión a la base de datos de escritura solo mientras se ejecuta el callback. Es útil cuando quieres que la aplicación indique explícitamente qué lecturas son críticas, en lugar de proteger toda una sesión.
También se aplica a las consultas de Eloquent y de relaciones que usan la misma conexión. Devuelve el resultado del callback y restaura la configuración de lectura anterior incluso si se lanza una excepción, de modo que el cambio no se arrastra al código posterior. Fuente principal: Temporarily Read from the Write Database Connection, database.md oficial de Laravel 13

Configurar en bloque la ejecución de tareas en un único servidor

Para reducir los olvidos de onOneServer() al ejecutar el planificador en varios servidores, en v13.35.0 se añadió Schedule::alwaysOnOneServer(). Llámalo en boot() de AppServiceProvider para aplicarlo de una vez a todas las tareas programadas afectadas.
Este valor predeterminado solo se aplica cuando lo llamas. Los closures programados sin nombre quedan excluidos y siguen ejecutándose en cada servidor.
onOneServer() requiere una caché central compartida por todos los servidores. Los drivers que indica la documentación oficial son database, memcached, dynamodb y redis. Añadir la configuración no proporciona por sí solo una infraestructura de bloqueo entre servidores.
Fuente principal: Run Scheduled Tasks on One Server by Default, scheduling.md oficial de Laravel 13. Página relacionada: Programación de tareas

Verificar despachos en fakes indicando propiedades

Desde v13.35.0, los fakes de Queue, Bus, Event y Notification aceptan un array de propiedades esperadas. Ya no necesitas escribir un callback cada vez solo para comparar atributos. Por ejemplo, con un job ShipOrder que tiene una propiedad pública order y un $order preparado en la prueba, puedes verificarlo así:
Todas las propiedades indicadas deben coincidir. Los valores se comparan de forma estricta, pero los modelos de Eloquent se comparan con is(), así que también coincide otra instancia que represente el mismo modelo. Los fakes verifican el despacho, no el resultado de ejecutar el job. Fuente principal: Assert Fake Dispatches by Their Properties, queues.md oficial de Laravel 13. Páginas relacionadas: Colas, Mocking

Indicar el límite de memoria del worker en porcentaje

Desde v13.35.0, la opción --memory de queue:work acepta un porcentaje del memory_limit de PHP. Puedes ajustar el umbral de salida del worker a la configuración de PHP sin recalcular un valor fijo en MB para cada entorno.
No es un porcentaje de la memoria total del host o del contenedor. Si el memory_limit de PHP es ilimitado (-1), usa un valor en MB en lugar de un porcentaje. El reinicio de un worker que termina al alcanzar el umbral queda a cargo de un supervisor de procesos como Supervisor. Fuente principal: Set Queue Worker Memory Limits as Percentages, queues.md oficial de Laravel 13

Devolver Markdown con un Content-Type propio

En v13.35.0 se añadió markdown() a la factoría de respuestas. Devuelve un cuerpo Markdown como text/markdown, y también puedes indicar el código de estado y cabeceras adicionales.
Puedes combinarlo con lógica que elige el formato de respuesta, como wantsMarkdown(). No convierte Markdown a HTML. Es una API para servir el propio Markdown como respuesta. Fuente principal: Return Markdown Responses, responses.md oficial de Laravel 13. Página relacionada: Respuestas

Ejecutar consultas analíticas en modo OLAP con Vitess

En v13.36.0 se añadieron isVitess() y olap() a las conexiones MySQL. Puedes detectar si usas Vitess o PlanetScale y ejecutar consultas analíticas con la carga de trabajo OLAP.
Configura la carga de trabajo en las conexiones de lectura y de escritura y vuelve a OLTP al terminar el callback. También se restaura si hay excepciones, y en una conexión MySQL normal sin Vitess el callback se ejecuta sin cambiar la carga de trabajo. Fuente principal: Use OLAP Workloads with Vitess Connections, database.md oficial de Laravel 13

Encontrar reglas de validación existentes mediante builders

En v13.36.0 se añadieron métodos builder de Rule para muchas reglas que antes se escribían como cadenas. Métodos como requiredWith(), acceptedIf(), regex() y timezone() son más fáciles de encontrar con el autocompletado del IDE, y puedes elegir el estilo sin cambiar el comportamiento de validación existente.
Los nombres de los métodos están en camel case. Puedes mezclarlos con reglas en cadena, así que no hace falta reescribir todas las reglas existentes de una vez. Fuente principal: Discover More Validation Rules Through Builders, validation.md oficial de Laravel 13. Página relacionada: Validación

Laravel Cloud

El blog mensual oficial presenta estos tres elementos. Fuente principal: Laravel October Product Updates — Laravel Cloud, Laravel Cloud changelog. Página relacionada: Presentación de Laravel Cloud

Laravel Forge

  • Avisos de actualizaciones de seguridad de PHP: Forge muestra, para cada servidor, las versiones afectadas por las versiones de seguridad de PHP de octubre y si hay versiones corregidas disponibles. Con Recheck versions vuelves a comprobar la versión realmente instalada. Volver a comprobar lo que se muestra y actualizar PHP son operaciones distintas.
  • Gestión de los fallos de aprovisionamiento: los servidores que no pueden completarse se muestran en estado fallido, con notificaciones, indicaciones sobre los siguientes pasos y una acción de eliminación. La instalación de PHP y Nginx también se reintenta antes de dar el fallo por confirmado.
El blog mensual también menciona la publicación de un post-mortem que repasa la respuesta de seguridad de PHP y Node.js de octubre. Para conocer las medidas tomadas y cómo decidir las actualizaciones, consulta los avisos oficiales. Fuente principal: Laravel October Product Updates — Laravel Forge, Laravel Forge changelog

Artículos relacionados

Actualización de septiembre de 2026

Un repaso a la construcción de proveedores de IA en tiempo de ejecución, las extensiones de búsqueda, Mercure y los entornos de vista previa aislados en Cloud.

Guía de base de datos

Repasa la separación de lectura y escritura y los fundamentos de las conexiones de base de datos.
Última modificación el 7 de noviembre de 2026