Qu’est-ce qu’une migration
Une migration s’apparente à un système de contrôle de version pour la base de données. Elle permet à une équipe de partager et gérer le schéma de la base. Vous avez sans doute déjà connu la situation où, après unpull du code, il faut demander à ses collègues d’« ajouter manuellement une colonne à leur base locale ».
Les migrations résolvent ce problème.
Les fichiers de migration sont stockés dans database/migrations.
Chaque nom de fichier contient un horodatage qui détermine l’ordre d’exécution.
Créer un fichier de migration
Utilisez la commande Artisanmake:migration.
create_posts_table produit un stub pour créer la table posts.
Structure d’une migration
Une classe de migration possède deux méthodes :up et down.
up: ajoute les tables, colonnes et index à la base.down: annule les opérations deup. Appelée lors du rollback.
Méthodes de définition de colonne
Blueprint propose de nombreux types de colonnes.
Modificateurs de colonne
Utilisez les méthodes chaînées pour ajouter des modificateurs.Colonnes et index vectoriels
La méthodevector crée une colonne vector pour stocker des vecteurs d’embedding. Renseigne dans dimensions la dimension de sortie du fournisseur d’embedding que tu utilises.
pgvector et sur MariaDB 11.7 ou version ultérieure. Sur PostgreSQL, active pgvector avant de créer une colonne vectorielle.
index à la colonne vector. Cet index utilise la distance cosinus.
dropVectorIndex.
Création d’index en ligne
Lorsque vous créez un index sur une grande table, la table est habituellement verrouillée pendant la construction de l’index, ce qui fait attendre les lectures et les écritures. Sur MySQL, ajoutez le modificateurinplace à la définition d’un index ou d’une clé étrangère pour exécuter l’opération avec l’algorithme INPLACE.
inplace avec le modificateur lock pour contrôler le verrou de table pendant l’opération. Avec none, les lectures et les écritures restent disponibles pour les opérations que MySQL autorise.
INPLACE et le mode de verrou indiqué. Pour utiliser inplace sur des opérations de clé étrangère, désactivez au préalable les contraintes de clé étrangère.
Exécuter les migrations
migrate exécute toutes les migrations en attente.
migrate:status liste les migrations exécutées et celles en attente.
Rollback
migrate:rollback annule le dernier lot de migrations.
--step limite le nombre de migrations à annuler.
migrate:refresh annule toutes les migrations puis les réexécute.
migrate:refresh recrée toutes les tables et supprime les données. Pratique pour réinitialiser la base en développement.Exemple : création de la table posts
Voyons la création d’une tableposts pour gérer des articles de blog.
1. Génération de la migration
2. Édition de la migration
Ouvrezdatabase/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php.
3. Exécution
posts est créée.
4. Ajouter une colonne après coup
Pour ajouter une colonne à une table existante, créez une nouvelle migration sans modifier l’existante.Événements de migration
Chaque opération de migration déclenche un événement. Tous héritent deIlluminate\Database\Events\MigrationEvent.
Par exemple, écoutez
MigrationsEnded pour vider le cache à la fin :
Prochaines étapes
Seeding de base de données
Alimentez les tables créées par vos migrations avec des données d’exemple.
Introduction à Eloquent
Manipulez les tables issues des migrations avec l’ORM Eloquent.