> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Aggiornamenti Laravel di ottobre 2026

> Gli aggiornamenti di Laravel 13 e dei prodotti ufficiali a ottobre 2026. Route QUERY, protezione dalle letture obsolete delle repliche, task pianificati su un solo server, verifiche dei fake tramite proprietà, integrazione Resend in Cloud e avvisi di aggiornamento PHP in Forge.

Ottobre 2026 ha introdotto funzionalità per controllare come vengono espresse le richieste, dove vanno le letture del database e come vengono eseguiti i task pianificati su più server. Laravel Cloud ha semplificato l'invio di email e la configurazione dei comandi pianificati, mentre Forge rende più facile seguire gli aggiornamenti di sicurezza di PHP e i provisioning falliti.

Questa pagina è un resoconto mensile basato sul post ufficiale "Laravel October Product Updates" pubblicato il 4 novembre e sulle voci di ottobre del changelog ufficiale del Framework. Le fonti primarie sono state verificate il 7 novembre 2026 e la parte Framework riguarda solo Laravel 13. Le release di novembre non sono incluse.

Fonti:

* [Laravel October Product Updates](https://laravel.com/blog/laravel-october-product-updates)
* [Laravel Framework changelog — October 2026](https://laravel.com/framework/docs/changelog#log-2026-10)
* [Laravel Framework changelog RSS](https://laravel.com/rss/oss-changelog)

## Laravel Framework

### Release di ottobre

Oltre alle principali novità del changelog ufficiale, date e versioni sono state verificate nelle release notes.

| Release | Pubblicazione | Modifiche principali |
| - | - | - |
| [v13.35.0](https://github.com/laravel/framework/releases/tag/v13.35.0) | 6 ottobre | Verifica delle proprietà nei fake, memoria del worker in percentuale, risposte Markdown, `alwaysOnOneServer()`, route QUERY. |
| [v13.36.0](https://github.com/laravel/framework/releases/tag/v13.36.0) | 13 ottobre | Esecuzione OLAP con Vitess, builder per le regole di validazione esistenti. |
| [v13.37.0](https://github.com/laravel/framework/releases/tag/v13.37.0) | 16 ottobre | Opzione strict per `Rule::numeric()`, correzione della race condition con `onOneServer()` e `withoutOverlapping()` combinati. |
| [v13.38.0](https://github.com/laravel/framework/releases/tag/v13.38.0) | 20 ottobre | `PreventStaleDatabaseReads`, `Connection::usingWritePdo()`. |
| [v13.39.0](https://github.com/laravel/framework/releases/tag/v13.39.0) | 27 ottobre | `RefreshDatabase` annulla tutti i livelli di transazione dopo ogni test, correzione di `assertSeeText('0')` che passava per errore. |

Di seguito vengono presentati in dettaglio i nove punti del changelog ufficiale. Per correzioni minori e modifiche alle dipendenze, consulta le singole release notes.

### Definire ricerche con corpo della richiesta tramite route QUERY

La v13.35.0 ha aggiunto `Route::query()`, che supporta il metodo HTTP `QUERY`. Puoi definire route che ricevono i criteri di ricerca nel corpo della richiesta invece che nella query string di GET.

```php theme={null}
use App\Http\Controllers\SearchProductsController;
use Illuminate\Support\Facades\Route;

Route::query('/products/search', SearchProductsController::class);
```

Anche `Route::any()` corrisponde alle richieste QUERY, e l'elenco delle route riconosce questo metodo. Il `SearchProductsController` qui sopra rappresenta un controller invocabile della tua applicazione che implementa la ricerca.

> [!WARNING]
>
> Le route QUERY del gruppo di middleware `web` sono soggette alla verifica CSRF. Non dare per scontato di poter saltare la verifica come per GET solo perché si tratta di una ricerca. Invia il token CSRF.

Fonti primarie: [Register QUERY Routes](https://laravel.com/framework/docs/changelog#october-2026-register-query-routes), [routing.md ufficiale di Laravel 13](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/routing.md#available-router-methods). Pagine correlate: [Routing](https://kawax.biz/it/routing.md), [Protezione CSRF](https://kawax.biz/it/csrf.md)

### Evitare letture obsolete anche nelle richieste successive a una scrittura

Con un database a lettura e scrittura separate, una lettura subito dopo un aggiornamento può finire su una read replica non ancora sincronizzata. L'opzione esistente `sticky` copre solo la stessa richiesta. Il middleware `PreventStaleDatabaseReads` della v13.38.0 protegge per un certo periodo anche le richieste successive della stessa sessione.

In `bootstrap/app.php`, importa `Illuminate\Foundation\Http\Middleware\PreventStaleDatabaseReads` e aggiungilo nella callback di `withMiddleware()` con `$middleware->web(append: [PreventStaleDatabaseReads::class]);`. Non si attiva automaticamente.

Il middleware registra nella sessione l'orario delle scritture sulla connessione al database predefinita. Per impostazione predefinita, indirizza le letture di quella connessione al database di scrittura per 2 secondi dopo una scrittura. Puoi cambiare il periodo registrando, ad esempio, `PreventStaleDatabaseReads::for(5)` al posto della classe.

```mermaid theme={null}
sequenceDiagram
    participant User as Utente
    participant App as Applicazione<br>Laravel
    participant Session as Sessione
    participant Write as Write DB
    participant Read as Read replica
    User->>App: Richiesta di aggiornamento
    App->>Write: Scrivi i dati
    App->>Session: Registra l'orario di scrittura
    User->>App: Richiesta successiva della stessa sessione
    App->>Session: Controlla il tempo trascorso dalla scrittura
    alt Entro il periodo di 2 secondi
        App->>Write: Leggi i dati
    else Dopo il periodo
        App->>Read: Usa la destinazione di lettura abituale
    end
```

Poiché usa la sessione, deve essere eseguito dopo `StartSession`. Non cambia le letture di altre sessioni o di altre connessioni al database e non rileva quando la replica ha terminato la sincronizzazione.

Fonti primarie: [Avoid Stale Reads After Database Writes](https://laravel.com/framework/docs/changelog#october-2026-avoid-stale-reads-after-database-writes), [database.md ufficiale di Laravel 13](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/database.md#preventing-stale-database-reads). Pagine correlate: [Database](https://kawax.biz/it/database.md), [Sessione](https://kawax.biz/it/session.md)

### Leggere dal database di scrittura solo per operazioni specifiche

`Connection::usingWritePdo()`, aggiunto anch'esso nella v13.38.0, sposta la destinazione di lettura della connessione sul database di scrittura solo durante l'esecuzione della callback. È utile quando vuoi che l'applicazione indichi esplicitamente quali letture sono critiche, invece di proteggere un'intera sessione.

```php theme={null}
use Illuminate\Support\Facades\DB;

$users = DB::connection()->usingWritePdo(
    fn ($connection) => $connection->table('users')->get()
);
```

Si applica anche alle query Eloquent e alle query di relazione che usano la stessa connessione. Restituisce il risultato della callback e ripristina l'impostazione di lettura precedente anche in caso di eccezione, così lo spostamento non si propaga al codice successivo.

Fonti primarie: [Temporarily Read from the Write Database Connection](https://laravel.com/framework/docs/changelog#october-2026-temporarily-read-from-the-write-database-connection), [database.md ufficiale di Laravel 13](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/database.md#using-the-write-connection-for-reads)

### Configurare in blocco l'esecuzione dei task su un solo server

Per ridurre le dimenticanze di `onOneServer()` quando lo scheduler gira su più server, la v13.35.0 ha aggiunto `Schedule::alwaysOnOneServer()`. Chiamalo in `boot()` di `AppServiceProvider` per applicarlo in una volta a tutti i task pianificati interessati.

```php theme={null}
use Illuminate\Support\Facades\Schedule;

Schedule::alwaysOnOneServer();
```

Questo valore predefinito si applica solo quando lo chiami. Le closure pianificate senza nome sono escluse e continuano a essere eseguite su ogni server.

> [!NOTE]
>
> `onOneServer()` richiede una cache centrale condivisa da tutti i server. I driver indicati dalla documentazione ufficiale sono `database`, `memcached`, `dynamodb` e `redis`. Aggiungere l'impostazione non fornisce da sola un'infrastruttura di lock tra server.

Fonti primarie: [Run Scheduled Tasks on One Server by Default](https://laravel.com/framework/docs/changelog#october-2026-run-scheduled-tasks-on-one-server-by-default), [scheduling.md ufficiale di Laravel 13](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/scheduling.md#running-tasks-on-one-server). Pagina correlata: [Pianificazione dei task](https://kawax.biz/it/scheduling.md)

### Verificare i dispatch dei fake indicando le proprietà

Dalla v13.35.0, i fake di Queue, Bus, Event e Notification accettano un array di proprietà attese. Non serve più scrivere ogni volta una callback solo per confrontare degli attributi.

Ad esempio, con un job `ShipOrder` che ha una proprietà pubblica `order` e un `$order` preparato nel test, puoi verificare così:

```php theme={null}
use App\Jobs\ShipOrder;
use Illuminate\Support\Facades\Queue;

Queue::fake();

ShipOrder::dispatch($order);

Queue::assertPushed(ShipOrder::class, ['order' => $order]);
```

Tutte le proprietà indicate devono corrispondere. I valori vengono confrontati in modo stretto, ma i modelli Eloquent vengono confrontati con `is()`, quindi corrisponde anche un'altra istanza che rappresenta lo stesso modello. I fake verificano il dispatch, non il risultato dell'esecuzione del job.

Fonti primarie: [Assert Fake Dispatches by Their Properties](https://laravel.com/framework/docs/changelog#october-2026-assert-fake-dispatches-by-their-properties), [queues.md ufficiale di Laravel 13](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/queues.md#testing). Pagine correlate: [Code](https://kawax.biz/it/queues.md), [Mocking](https://kawax.biz/it/mocking.md)

### Indicare il limite di memoria del worker in percentuale

Dalla v13.35.0, l'opzione `--memory` di `queue:work` accetta una percentuale del `memory_limit` di PHP. Puoi adattare la soglia di uscita del worker all'impostazione di PHP senza ricalcolare un valore fisso in MB per ogni ambiente.

```shell theme={null}
php artisan queue:work --memory=60%
```

Non è una percentuale della memoria totale dell'host o del container. Se il `memory_limit` di PHP è illimitato (`-1`), usa un valore in MB invece di una percentuale. Il riavvio di un worker terminato alla soglia è affidato a un monitor di processi come Supervisor.

Fonti primarie: [Set Queue Worker Memory Limits as Percentages](https://laravel.com/framework/docs/changelog#october-2026-set-queue-worker-memory-limits-as-percentages), [queues.md ufficiale di Laravel 13](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/queues.md#resource-considerations)

### Restituire Markdown con un Content-Type dedicato

La v13.35.0 ha aggiunto `markdown()` alla response factory. Restituisce un contenuto Markdown come `text/markdown`, e puoi indicare anche il codice di stato e intestazioni aggiuntive.

```php theme={null}
return response()->markdown("# Report\n\nMonthly summary", 200, [
    'Cache-Control' => 'no-store',
]);
```

Puoi combinarlo con la logica che sceglie il formato della risposta, come `wantsMarkdown()`. Non converte il Markdown in HTML. È un'API per servire il Markdown stesso come risposta.

Fonti primarie: [Return Markdown Responses](https://laravel.com/framework/docs/changelog#october-2026-return-markdown-responses), [responses.md ufficiale di Laravel 13](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/responses.md#markdown-responses). Pagina correlata: [Risposte](https://kawax.biz/it/responses.md)

### Eseguire query analitiche in modalità OLAP con Vitess

La v13.36.0 ha aggiunto `isVitess()` e `olap()` alle connessioni MySQL. Puoi rilevare se usi Vitess o PlanetScale ed eseguire query analitiche con il workload OLAP.

```php theme={null}
use Illuminate\Support\Facades\DB;

$totals = DB::connection('mysql')->olap(
    fn ($connection) => $connection->table('orders')
        ->selectRaw('customer_id, sum(total) as total')
        ->groupBy('customer_id')
        ->get()
);
```

Il workload viene impostato sia sulla connessione di lettura sia su quella di scrittura e riportato a OLTP al termine della callback. Viene ripristinato anche in caso di eccezione, e su una normale connessione MySQL senza Vitess la callback viene eseguita senza cambiare il workload.

Fonti primarie: [Use OLAP Workloads with Vitess Connections](https://laravel.com/framework/docs/changelog#october-2026-use-olap-workloads-with-vitess-connections), [database.md ufficiale di Laravel 13](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/database.md#running-analytical-queries-on-vitess)

### Trovare le regole di validazione esistenti tramite i builder

La v13.36.0 ha aggiunto metodi builder di `Rule` per molte regole che prima si scrivevano come stringhe. Metodi come `requiredWith()`, `acceptedIf()`, `regex()` e `timezone()` si trovano più facilmente con il completamento dell'IDE, e puoi scegliere lo stile mantenendo il comportamento di validazione esistente.

```php theme={null}
use Illuminate\Validation\Rule;

$rules = [
    'nickname' => [Rule::requiredWith('email'), Rule::regex('/^[a-z]+$/i')],
    'terms' => [Rule::acceptedIf('account_type', 'business')],
    'timezone' => [Rule::timezone()],
];
```

I nomi dei metodi sono in camel case. Puoi mescolarli con le regole stringa, quindi non serve riscrivere tutte le regole esistenti in una volta.

Fonti primarie: [Discover More Validation Rules Through Builders](https://laravel.com/framework/docs/changelog#october-2026-discover-more-validation-rules-through-builders), [validation.md ufficiale di Laravel 13](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/validation.md#rule-builders). Pagina correlata: [Validazione](https://kawax.biz/it/validation.md)

## Laravel Cloud

Il blog mensile ufficiale presenta i tre punti seguenti.

| Funzionalità | Novità |
| - | - |
| Integrazione Resend | Quando colleghi un account Resend alla tua organizzazione, Cloud importa i domini di invio e mostra i record DNS necessari e lo stato di verifica. Quando colleghi la risorsa email a un ambiente, Cloud emette una chiave API e imposta `RESEND_API_KEY`, `MAIL_MAILER`, `MAIL_FROM_ADDRESS` e `MAIL_FROM_NAME`. |
| Cloud scheduler | Le applicazioni in tutti i linguaggi supportati da Cloud possono eseguire comandi pianificati senza installare cron né mantenere attivo un processo scheduler. Puoi usare preset o espressioni cron personalizzate e controllare in Logs output, codice di uscita e durata di ogni esecuzione. |
| Controllo dello stato dei domini | Cloud verifica ogni ora che il DNS dei domini collegati punti a Cloud e lo stato di rinnovo dei certificati SSL. I problemi compaiono nel canvas dell'ambiente e vengono notificati anche via email e Slack. |

Fonti primarie: [Laravel October Product Updates — Laravel Cloud](https://laravel.com/blog/laravel-october-product-updates#laravel-cloud), [Laravel Cloud changelog](https://laravel.com/cloud/docs/changelog). Pagina correlata: [Presentazione di Laravel Cloud](https://kawax.biz/it/blog/laravel-cloud.md)

## Laravel Forge

* **Avvisi sugli aggiornamenti di sicurezza PHP**: Forge mostra, per ogni server, le versioni interessate dalle release di sicurezza PHP di ottobre e la disponibilità delle versioni corrette. Con **Recheck versions** ricontrolli la versione effettivamente installata. Ricontrollare la visualizzazione e aggiornare PHP sono operazioni separate.
* **Gestione dei provisioning falliti**: i server che non riescono a completare il provisioning vengono mostrati come falliti, con notifica, indicazioni sul passo successivo e un'azione di eliminazione. Anche l'installazione di PHP e Nginx viene ritentata prima di confermare il fallimento.

Il blog mensile cita anche la pubblicazione di un post-mortem sulla risposta di sicurezza PHP e Node.js di ottobre. Per le misure adottate e le decisioni di aggiornamento, consulta gli avvisi ufficiali.

Fonti primarie: [Laravel October Product Updates — Laravel Forge](https://laravel.com/blog/laravel-october-product-updates#laravel-forge), [Laravel Forge changelog](https://laravel.com/forge/docs/changelog)

## Articoli correlati

> [card] [Aggiornamenti di settembre 2026](https://kawax.biz/it/blog/changelog/202609.md)
>
> Uno sguardo alla costruzione dei provider AI a runtime, alle estensioni di ricerca, a Mercure e agli ambienti di anteprima isolati in Cloud.

> [card] [Guida al database](https://kawax.biz/it/database.md)
>
> Rivedi la separazione tra lettura e scrittura e le basi delle connessioni al database.


## Related topics

- [Aggiornamenti Laravel di settembre 2026](https://kawax.biz/it/blog/changelog/202609.md)
- [Aggiornamenti Laravel di marzo 2026](https://kawax.biz/it/blog/changelog/202603.md)
- [Aggiornamenti Laravel di luglio 2026](https://kawax.biz/it/blog/changelog/202607.md)
- [Aggiornamenti Laravel di agosto 2026](https://kawax.biz/it/blog/changelog/202608.md)
- [Aggiornamenti Laravel di giugno 2026](https://kawax.biz/it/blog/changelog/202606.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.