Laravel a publié coup sur coup les versions 13.30.0 et 13.30.1 le 1er septembre 2026. Au programme : la gestion des index vectoriels depuis les migrations, une nouvelle méthode Eloquent pour les insertions idempotentes, et une série de correctifs ciblés sur les files d’attente, le cache et le moteur SQL Server. Aucun changement cassant n’est signalé, la montée de version se fait donc sans réécriture.
Des index vectoriels pilotables depuis une migration
Le fait marquant de la version est l’arrivée de dropVectorIndex() sur le constructeur de schéma. La création d’index vectoriels existait déjà dans la branche 13 ; il manquait leur suppression propre depuis une migration, indispensable pour écrire une méthode down() réversible. Le stockage de vecteurs dans la base sert directement les fonctionnalités de recherche sémantique, aujourd’hui courantes dans les applications qui exposent des outils à des agents.
Schema::table('documents', function (Blueprint $table) {
// Create the vector index (already available before 13.30)
$table->vectorIndex('embedding');
});
// Reverse migration, now symmetrical
Schema::table('documents', function (Blueprint $table) {
$table->dropVectorIndex('embedding');
});Eloquent : insérer sans dupliquer, et récupérer les lignes
La méthode insertOrIgnoreReturning() complète le couple insertOrIgnore() et insertGetId(). Elle insère un lot en ignorant les violations de contrainte d’unicité, puis renvoie les enregistrements réellement créés, sur les pilotes qui prennent en charge la clause RETURNING.
$inserted = Document::insertOrIgnoreReturning([
['reference' => 'DOC-1024', 'status' => 'indexed'],
['reference' => 'DOC-1024', 'status' => 'indexed'], // duplicate ignored
]);
// $inserted only holds the rows that were actually writtenFiles d’attente et correctifs à connaître
L’événement WorkerStopping transporte maintenant le nom de la connexion et de la file concernées, ce qui facilite le diagnostic des arrêts de workers en production. Cette amélioration prolonge le travail engagé sur les files avec Laravel 13.26. Deux correctifs méritent l’attention des équipes : sous SQL Server, la clause limit() était ignorée lors d’un update(), et le cache Redis étiqueté laissait des entrées orphelines après invalidation.
| Composant | Changement | Nature |
|---|---|---|
| Schéma | dropVectorIndex() | Ajout |
| Eloquent | insertOrIgnoreReturning() | Ajout |
| Files d’attente | Connexion et file dans WorkerStopping | Amélioration |
| SQL Server | limit() respecté sur update() | Correctif |
| Cache Redis | Entrées étiquetées orphelines supprimées | Correctif |
La suppression d’index vectoriels manquait à l’appel : sans elle, aucune migration de recherche sémantique n’était vraiment réversible.
La prise en charge des index vectoriels dépend du pilote de base de données et de son moteur. Vérifier la disponibilité de la fonctionnalité côté serveur, par exemple PostgreSQL équipé de pgvector, avant de porter une migration en production.
Ce qu’il faut retenir
Laravel 13.30 ne bouleverse rien mais consolide deux chantiers de fond : la recherche vectorielle native et l’ergonomie d’Eloquent pour les insertions de masse. La mise à jour est sans risque de rupture et se justifie surtout pour les projets qui manipulent des embeddings ou des files d’attente sensibles.
Sur mes projets, dropVectorIndex() résout un vrai point de friction : je gérais jusqu’ici la suppression d’index vectoriels en SQL brut dans mes migrations, avec le risque d’oublier la version de test. Voir la symétrie revenir dans le constructeur de schéma est le genre de détail qui fait gagner du temps sur la durée. — Simon Janvier
Pour aller plus loin
Notes de version officielles : Laravel 13.30.0 sur GitHub et le fichier CHANGELOG du dépôt.
