Das Laravel Framework 13.37.0 ist am 16. Oktober für den 13.x-Zweig erschienen. Die Version behebt eine Race Condition bei Jobs, die onOneServer() mit withoutOverlapping() kombinieren. Tests mit einem simulierten Sleep berücksichtigen nun das block() Timeout des Limiters.

getForeignKeys() arbeitet auf MariaDB- und MySQL-Servern mit vielen Datenbanken effizienter. Eloquent korrigiert has() und withCount() bei selbstreferenzierenden One-of-many-Relationen. Existenzabfragen für selbstreferenzierende HasOneThrough-One-of-many-Relationen verwenden jetzt den Alias der Zwischentabelle. Auch die Collection-Typen von whereBelongsTo() und whereAttachedTo() wurden korrigiert.

Eloquent cursor() erzeugt keine unnötigen Model-Instanzen mehr. Verschachtelte JSON:API-Relationen verursachen keine N+1-Abfragen mehr. incrementOrCreate() funktioniert nun bei Through-Relationen. restore() arbeitet bei Soft-Delete-Abfragen mit Joins korrekt. Eloquent Collection findOrFail() verarbeitet eine Model-Instanz korrekt. Zwischengespeicherte Attribute-Accessors liefern nach einer Attributänderung keine veralteten Werte mehr.

Callbacks von withWhereHas() können Spalten auswählen. Abfragen mit Joins qualifizieren die Standardspalte von latest() und oldest(). Attributspalten von Through-Relationen werden in firstOrNew() und firstOrCreate() qualifiziert. Das gilt auch für createOrFirst(). JSON:API-Ressourcenattribute verarbeiten mergeWhen() nun korrekt.

Die Queue-Verarbeitung gibt eine eindeutige Sperre frei, wenn das Einstellen eines Jobs fehlschlägt. Sperren von Queue-Listenern werden nach einem fehlgeschlagenen Push freigegeben. Queue::fake() gibt eindeutige Listener-Sperren ebenfalls frei. queue:failed akzeptiert die neue Option --queue. queue:forget kann mehrere IDs verarbeiten. ScheduledTaskFailed enthält nun die Laufzeit.

FTP- und SFTP-Disks erhalten die Option detect_mime_type_using_path. Die Image API unterstützt JPEG XL (JXL). RedirectResponse kann Responsable implementieren. InvokableComponentVariable erhält einen generischen Rückgabetyp.

Rule::numeric() bekommt eine strict-Option. Rule::when() und Rule::unless() akzeptieren Stringable in ihren Parametertypen. Verschlüsselte Object- und Collection-Casts bleiben nicht mehr fälschlich als geändert markiert. DynamoDbStore::many() liefert Werte bei numerischen Schlüsseln nun unter den richtigen Schlüsseln zurück.

Übersprungene Migrationen meldet migrate:status nicht mehr als ausstehend. Beim Trennen toter Verbindungen werden Abbauwarnungen unterdrückt. Außerdem wurde das Exception-Reporting verbessert.