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

# Laravel-updates van oktober 2026

> De updates van Laravel 13 en de officiële producten in oktober 2026. QUERY-routes, bescherming tegen verouderde reads van replica's, geplande taken op één server, fake-asserties op eigenschappen, de Resend-integratie in Cloud en PHP-updatemeldingen in Forge.

In oktober 2026 kwamen er functies bij om te bepalen hoe requests worden uitgedrukt, waar databasereads naartoe gaan en hoe geplande taken op meerdere servers draaien. Laravel Cloud maakte het versturen van mail en het instellen van geplande commando's eenvoudiger, en in Forge zijn PHP-beveiligingsupdates en mislukte provisioning makkelijker te volgen.

Deze pagina is een maandelijks overzicht op basis van de officiële blogpost "Laravel October Product Updates" van 4 november en de oktoberitems in de officiële Framework-changelog. De primaire bronnen zijn op 7 november 2026 gecontroleerd, en het Framework-deel behandelt alleen Laravel 13. Releases uit november zijn niet opgenomen.

Bronnen:

* [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

### Releases in oktober

Naast de belangrijkste nieuwe functies in de officiële changelog zijn de datums en versies gecontroleerd in de release notes.

| Release | Gepubliceerd | Belangrijkste wijzigingen |
| - | - | - |
| [v13.35.0](https://github.com/laravel/framework/releases/tag/v13.35.0) | 6 oktober | Eigenschapsasserties voor fakes, workergeheugen als percentage, Markdown-responses, `alwaysOnOneServer()`, QUERY-routes. |
| [v13.36.0](https://github.com/laravel/framework/releases/tag/v13.36.0) | 13 oktober | OLAP-uitvoering met Vitess, builders voor bestaande validatieregels. |
| [v13.37.0](https://github.com/laravel/framework/releases/tag/v13.37.0) | 16 oktober | Optie strict voor `Rule::numeric()`, oplossing voor de race condition bij gecombineerd `onOneServer()` en `withoutOverlapping()`. |
| [v13.38.0](https://github.com/laravel/framework/releases/tag/v13.38.0) | 20 oktober | `PreventStaleDatabaseReads`, `Connection::usingWritePdo()`. |
| [v13.39.0](https://github.com/laravel/framework/releases/tag/v13.39.0) | 27 oktober | `RefreshDatabase` draait na elke test alle transactieniveaus terug, oplossing voor `assertSeeText('0')` dat onterecht slaagde. |

Hieronder worden de negen items uit de officiële changelog uitgebreid besproken. Voor kleine fixes en wijzigingen in afhankelijkheden zie je de afzonderlijke release notes.

### Zoekopdrachten met een request body definiëren via QUERY-routes

In v13.35.0 is `Route::query()` toegevoegd, dat de HTTP-methode `QUERY` ondersteunt. Je kunt routes definiëren die zoekcriteria in de request body ontvangen in plaats van in de GET-querystring.

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

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

Ook `Route::any()` matcht QUERY-requests, en de routelijst herkent deze methode. De `SearchProductsController` hierboven staat voor een invokable controller in je applicatie die de zoekfunctie implementeert.

> [!WARNING]
>
> QUERY-routes in de middlewaregroep `web` vallen onder CSRF-verificatie. Ga er niet van uit dat je de verificatie zoals bij GET kunt overslaan omdat het een zoekopdracht is. Stuur het CSRF-token mee.

Primaire bronnen: [Register QUERY Routes](https://laravel.com/framework/docs/changelog#october-2026-register-query-routes), [officiële Laravel 13 routing.md](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/routing.md#available-router-methods). Gerelateerde pagina's: [Routing](https://kawax.biz/nl/routing.md), [CSRF-bescherming](https://kawax.biz/nl/csrf.md)

### Verouderde reads ook in latere requests na een write vermijden

Bij een database met gescheiden lezen en schrijven kan een read direct na een update naar een read replica gaan die nog niet gesynchroniseerd is. De bestaande optie `sticky` geldt alleen binnen hetzelfde request. De middleware `PreventStaleDatabaseReads` uit v13.38.0 beschermt daarnaast gedurende een bepaalde periode ook de volgende requests van dezelfde sessie.

Importeer in `bootstrap/app.php` de klasse `Illuminate\Foundation\Http\Middleware\PreventStaleDatabaseReads` en voeg hem in de callback van `withMiddleware()` toe met `$middleware->web(append: [PreventStaleDatabaseReads::class]);`. De functie wordt niet automatisch ingeschakeld.

De middleware legt het tijdstip van writes naar de standaard databaseverbinding vast in de sessie. Standaard stuurt hij reads op die verbinding gedurende 2 seconden na een write naar de write-database. Je wijzigt de periode door in plaats van de klasse bijvoorbeeld `PreventStaleDatabaseReads::for(5)` te registreren.

```mermaid theme={null}
sequenceDiagram
    participant User as Gebruiker
    participant App as Laravel-<br>app
    participant Session as Sessie
    participant Write as Write DB
    participant Read as Read replica
    User->>App: Updaterequest
    App->>Write: Data schrijven
    App->>Session: Schrijftijdstip vastleggen
    User->>App: Volgend request in dezelfde sessie
    App->>Session: Tijd sinds de write controleren
    alt Binnen de beschermingsperiode van 2 seconden
        App->>Write: Data lezen
    else Na de beschermingsperiode
        App->>Read: Gebruikelijke leesbestemming gebruiken
    end
```

Omdat hij de sessie gebruikt, moet hij na `StartSession` draaien. Hij schakelt geen reads van andere sessies of andere databaseverbindingen om en detecteert ook niet wanneer de replica klaar is met synchroniseren.

Primaire bronnen: [Avoid Stale Reads After Database Writes](https://laravel.com/framework/docs/changelog#october-2026-avoid-stale-reads-after-database-writes), [officiële Laravel 13 database.md](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/database.md#preventing-stale-database-reads). Gerelateerde pagina's: [Database](https://kawax.biz/nl/database.md), [Sessie](https://kawax.biz/nl/session.md)

### Alleen voor specifieke bewerkingen uit de write-database lezen

`Connection::usingWritePdo()`, ook toegevoegd in v13.38.0, schakelt de leesbestemming van de verbinding alleen tijdens het uitvoeren van de callback om naar de write-database. Dit is handig wanneer je in de applicatie expliciet wilt aangeven welke reads kritiek zijn, in plaats van een hele sessie te beschermen.

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

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

Het geldt ook voor Eloquent-queries en relatiequeries die dezelfde verbinding gebruiken. Het geeft het resultaat van de callback terug en herstelt de vorige leesinstelling ook bij een exception, zodat de omschakeling niet doorlekt naar latere code.

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

### Geplande taken in één keer instellen op uitvoering op één server

Om vergeten `onOneServer()`-aanroepen te verminderen wanneer de scheduler op meerdere servers draait, is in v13.35.0 `Schedule::alwaysOnOneServer()` toegevoegd. Roep het aan in `boot()` van `AppServiceProvider` om het in één keer op alle betreffende geplande taken toe te passen.

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

Schedule::alwaysOnOneServer();
```

Deze standaard werkt pas wanneer je hem aanroept. Geplande closures zonder naam vallen erbuiten en blijven op elke server draaien.

> [!NOTE]
>
> `onOneServer()` vereist een centrale cache die alle servers delen. De drivers die de officiële documentatie noemt zijn `database`, `memcached`, `dynamodb` en `redis`. Alleen de instelling toevoegen levert nog geen lockinfrastructuur tussen servers op.

Primaire bronnen: [Run Scheduled Tasks on One Server by Default](https://laravel.com/framework/docs/changelog#october-2026-run-scheduled-tasks-on-one-server-by-default), [officiële Laravel 13 scheduling.md](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/scheduling.md#running-tasks-on-one-server). Gerelateerde pagina: [Taakplanning](https://kawax.biz/nl/scheduling.md)

### Dispatches in fakes controleren aan de hand van eigenschappen

Sinds v13.35.0 accepteren de fakes van Queue, Bus, Event en Notification een array met verwachte eigenschappen. Je hoeft niet meer elke keer een callback te schrijven alleen om attributen te vergelijken.

Met bijvoorbeeld een job `ShipOrder` die een publieke eigenschap `order` heeft en een in de test voorbereide `$order`, controleer je het zo:

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

Queue::fake();

ShipOrder::dispatch($order);

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

Alle opgegeven eigenschappen moeten overeenkomen. Waarden worden strikt vergeleken, maar Eloquent-modellen worden vergeleken met `is()`, zodat ook een andere instantie van hetzelfde model overeenkomt. Fakes controleren de dispatch, niet het resultaat van het uitvoeren van de job zelf.

Primaire bronnen: [Assert Fake Dispatches by Their Properties](https://laravel.com/framework/docs/changelog#october-2026-assert-fake-dispatches-by-their-properties), [officiële Laravel 13 queues.md](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/queues.md#testing). Gerelateerde pagina's: [Queues](https://kawax.biz/nl/queues.md), [Mocking](https://kawax.biz/nl/mocking.md)

### Geheugenlimiet van workers als percentage opgeven

Sinds v13.35.0 accepteert `--memory` van `queue:work` een percentage van PHP's `memory_limit`. Je stemt de stopdrempel van de worker af op de PHP-instelling zonder voor elke omgeving een vaste MB-waarde opnieuw te berekenen.

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

Het is geen percentage van het totale geheugen van de host of container. Als PHP's `memory_limit` onbeperkt is (`-1`), gebruik dan een MB-waarde in plaats van een percentage. Het herstarten van een worker die bij de drempel stopt, laat je over aan een procesmonitor zoals Supervisor.

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

### Markdown teruggeven met een eigen Content-Type

In v13.35.0 is `markdown()` aan de response factory toegevoegd. Het geeft een Markdown-body terug als `text/markdown`, en je kunt ook een statuscode en extra headers opgeven.

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

Je kunt het combineren met logica die het responseformaat kiest, zoals `wantsMarkdown()`. Het zet Markdown niet om naar HTML. Het is een API om Markdown zelf als response aan te bieden.

Primaire bronnen: [Return Markdown Responses](https://laravel.com/framework/docs/changelog#october-2026-return-markdown-responses), [officiële Laravel 13 responses.md](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/responses.md#markdown-responses). Gerelateerde pagina: [Responses](https://kawax.biz/nl/responses.md)

### Analysequeries in OLAP-modus uitvoeren met Vitess

In v13.36.0 zijn `isVitess()` en `olap()` aan MySQL-verbindingen toegevoegd. Je kunt detecteren of je Vitess of PlanetScale gebruikt en analysequeries uitvoeren met de OLAP-workload.

```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()
);
```

De workload wordt op zowel de lees- als de schrijfverbinding ingesteld en aan het einde van de callback teruggezet naar OLTP. Ook bij exceptions wordt hij hersteld, en op een gewone MySQL-verbinding zonder Vitess draait de callback zonder de workload te wijzigen.

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

### Bestaande validatieregels vinden via builders

In v13.36.0 zijn `Rule`-buildermethoden toegevoegd voor veel regels die voorheen als string werden opgegeven. Methoden zoals `requiredWith()`, `acceptedIf()`, `regex()` en `timezone()` zijn makkelijker te vinden via de autocompletion van je IDE, en je kiest de schrijfwijze zonder het bestaande validatiegedrag te veranderen.

```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()],
];
```

De methodenamen zijn in camelCase. Je kunt ze mengen met stringregels, dus je hoeft bestaande regels niet in één keer te herschrijven.

Primaire bronnen: [Discover More Validation Rules Through Builders](https://laravel.com/framework/docs/changelog#october-2026-discover-more-validation-rules-through-builders), [officiële Laravel 13 validation.md](https://github.com/laravel/docs/blob/f7a20c401a30827991659174d48d958f92517a9e/validation.md#rule-builders). Gerelateerde pagina: [Validatie](https://kawax.biz/nl/validation.md)

## Laravel Cloud

De officiële maandelijkse blog stelt de volgende drie punten voor.

| Functie | Wijziging |
| - | - |
| Resend-integratie | Wanneer je een Resend-account aan je organisatie koppelt, importeert Cloud de verzenddomeinen en toont het de benodigde DNS-records en de verificatiestatus. Wanneer je de mailresource aan een omgeving koppelt, geeft Cloud een API-sleutel uit en stelt het `RESEND_API_KEY`, `MAIL_MAILER`, `MAIL_FROM_ADDRESS` en `MAIL_FROM_NAME` in. |
| Cloud scheduler | Applicaties in elke taal die Cloud ondersteunt, kunnen geplande commando's uitvoeren zonder cron te installeren of een schedulerproces actief te houden. Je gebruikt presets of eigen cron-expressies en bekijkt de output, exitcode en duur van elke run in Logs. |
| Domeinhealthchecks | Cloud controleert elk uur of de DNS van gekoppelde domeinen naar Cloud wijst en hoe het staat met de vernieuwing van SSL-certificaten. Problemen verschijnen op het omgevingscanvas en worden ook per e-mail en Slack gemeld. |

Primaire bronnen: [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). Gerelateerde pagina: [Kennismaking met Laravel Cloud](https://kawax.biz/nl/blog/laravel-cloud.md)

## Laravel Forge

* **Meldingen over PHP-beveiligingsupdates**: Forge toont per server welke versies getroffen zijn door de PHP-beveiligingsreleases van oktober en of er gecorrigeerde versies beschikbaar zijn. Met **Recheck versions** controleer je opnieuw welke versie daadwerkelijk geïnstalleerd is. De weergave opnieuw controleren en PHP updaten zijn aparte handelingen.
* **Omgaan met mislukte provisioning**: servers die niet afgerond kunnen worden, verschijnen als mislukt, met een melding, aanwijzingen voor de volgende stap en een verwijderactie. Ook de installatie van PHP en Nginx wordt opnieuw geprobeerd voordat de mislukking vaststaat.

De maandelijkse blog vermeldt ook de publicatie van een post-mortem over de PHP- en Node.js-beveiligingsrespons in oktober. Voor de genomen maatregelen en updatebeslissingen raadpleeg je de officiële berichten.

Primaire bronnen: [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)

## Gerelateerde artikelen

> [card] [Updates van september 2026](https://kawax.biz/nl/blog/changelog/202609.md)
>
> Een terugblik op AI-providers bouwen tijdens runtime, zoekextensies, Mercure en geïsoleerde preview-omgevingen in Cloud.

> [card] [Databasegids](https://kawax.biz/nl/database.md)
>
> Bekijk lees-/schrijfscheiding en de basis van databaseverbindingen.


## Related topics

- [Laravel-updates van september 2026](https://kawax.biz/nl/blog/changelog/202609.md)
- [Laravel-updates van juli 2026](https://kawax.biz/nl/blog/changelog/202607.md)
- [Laravel-updates van maart 2026](https://kawax.biz/nl/blog/changelog/202603.md)
- [Laravel-updates van augustus 2026](https://kawax.biz/nl/blog/changelog/202608.md)
- [Laravel-updates van april 2026](https://kawax.biz/nl/blog/changelog/202604.md)


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