- Laravel October Product Updates
- Laravel Framework changelog — October 2026
- Laravel Framework changelog RSS
Laravel Framework
10 月的發布範圍
除了官方 Changelog 中的主要新功能外,也根據發布說明確認了日期與導入版本。
以下詳細介紹官方 Changelog 中列出的 9 個項目。細微的修正與相依套件變更,請參閱各發布說明。
使用 QUERY 路由定義帶有請求本文的搜尋
v13.35.0 新增了對應 HTTPQUERY 方法的 Route::query()。可以定義透過請求本文而非 GET 查詢字串接收搜尋條件的路由。
Route::any() 也會比對 QUERY 請求,路由清單也能辨識此方法。上方的 SearchProductsController 假設為應用程式中實作了搜尋處理的 Invokable Controller。
一手資料:Register QUERY Routes、Laravel 13 官方 routing.md。相關頁面:路由、CSRF 保護
在寫入後的其他請求中也避免讀取過期資料
在讀寫分離的資料庫中,更新後立即進行的讀取可能會送往尚未同步的 Read replica。既有的sticky 設定只針對同一請求內,而 v13.38.0 的 PreventStaleDatabaseReads 會為同一工作階段的後續請求也設定保護期間。
在 bootstrap/app.php 中 import Illuminate\Foundation\Http\Middleware\PreventStaleDatabaseReads,並在 withMiddleware() 的回呼中以 $middleware->web(append: [PreventStaleDatabaseReads::class]); 加入。此功能不會自動啟用。
中介層會將對預設資料庫連線的寫入時間記錄到工作階段,預設在寫入後的 2 秒內將該連線的讀取送往 Write DB。可以將註冊的類別換成 PreventStaleDatabaseReads::for(5) 等來變更保護期間。
由於使用工作階段,必須在 StartSession 之後執行。它不會切換其他工作階段或其他資料庫連線的讀取,也不會偵測副本是否已完成同步。
一手資料:Avoid Stale Reads After Database Writes、Laravel 13 官方 database.md。相關頁面:資料庫、Session
只讓特定處理從 Write DB 讀取
同樣在 v13.38.0 新增的Connection::usingWritePdo(),只在回呼執行期間將該連線的讀取目標切換到 Write DB。它不是以工作階段為單位的保護,適合想在應用程式中明確指定重要讀取範圍的情況。
統一將排程設定為單一伺服器執行
為了減少在多台伺服器上執行排程器時遺漏為每個任務指定onOneServer() 的情況,v13.35.0 新增了 Schedule::alwaysOnOneServer()。在 AppServiceProvider 的 boot() 中呼叫,即可一次套用到相關的排程。
onOneServer() 需要所有伺服器共用的中央快取。官方文件列出的支援驅動為 database、memcached、dynamodb 與 redis。僅加入設定並不會提供跨伺服器的鎖定基礎設施。在 Fake 中指定屬性來驗證派發
從 v13.35.0 起,可以將期望屬性的陣列傳給 Queue、Bus、Event、Notification 的 Fake。不再需要為了單純的屬性比較而每次撰寫回呼。 例如,使用具有公開order 屬性的 ShipOrder 工作,以及測試中準備的 $order 時,可以這樣驗證:
is() 比較,因此代表同一模型的不同實例也能比對成功。Fake 驗證的是派發,而不是工作本身的執行結果。
一手資料:Assert Fake Dispatches by Their Properties、Laravel 13 官方 queues.md。相關頁面:佇列、Mock
以比例指定 worker 的記憶體上限
從 v13.35.0 起,queue:work 的 --memory 可以指定相對於 PHP memory_limit 的比例。不必為每個環境重新計算固定的 MB 值,就能依照 PHP 設定調整 worker 的結束門檻。
memory_limit 為無限制的 -1 時,請使用 MB 值而非比例。因達到門檻而結束的 worker 的重新啟動,交由 Supervisor 等程序監控負責。
一手資料:Set Queue Worker Memory Limits as Percentages、Laravel 13 官方 queues.md
以專用 Content-Type 回傳 Markdown
v13.35.0 為回應工廠新增了markdown()。它以 text/markdown 回傳 Markdown 本文,也可以指定狀態碼與額外標頭。
wantsMarkdown() 等選擇回應格式的處理搭配使用。它不是將 Markdown 轉換為 HTML 回傳的功能,而是將 Markdown 本身作為回應提供的 API。
一手資料:Return Markdown Responses、Laravel 13 官方 responses.md。相關頁面:回應
在 Vitess 中以 OLAP 模式執行分析查詢
v13.36.0 為 MySQL 連線新增了isVitess() 與 olap()。可以判斷是否正在使用 Vitess 或 PlanetScale,並以 OLAP 工作負載執行分析用途的查詢。
透過 Builder 找到既有驗證規則
v13.36.0 為許多過去以字串指定的規則新增了Rule 的 Builder 方法。requiredWith()、acceptedIf()、regex()、timezone() 等更容易透過 IDE 自動完成找到,並可在維持既有驗證行為的同時選擇寫法。
Laravel Cloud
官方月度部落格介紹了以下 3 個項目。
一手資料:Laravel October Product Updates — Laravel Cloud、Laravel Cloud changelog。相關頁面:Laravel Cloud 介紹
Laravel Forge
- PHP 安全更新通知:依伺服器顯示受 10 月 PHP 安全發布影響的版本,並提示修正版本的提供狀況。可以透過 Recheck versions 重新確認實際安裝的版本。重新確認顯示與更新 PHP 是不同的操作。
- 佈建失敗的處理:將無法完成的伺服器顯示為失敗狀態,並提供通知、後續操作指引與刪除操作。PHP 與 Nginx 的安裝也會在確定失敗前重試。
相關文章
2026 年 9 月更新
回顧執行時建構 AI 提供者、搜尋擴充、Mercure 以及 Cloud 的隔離預覽環境。
資料庫指南
確認讀寫分離與資料庫連線的基礎。