Les commandes «migrer: rafraîchir» et «migrer: réinitialisation» dans Laravel sont toutes deux liées à la gestion des migrations de la base de données, mais elles servent des objectifs différentes et se comportent de manière distincte pendant la gestion du schéma de base de données. Comprendre leurs différences est crucial pour les développeurs de Laravel afin de gérer efficacement les états de base de données pendant le développement ou le déploiement.
migrer: actualiser
La commande `PHP Artisan Migrate: Refresh` est utilisée pour annuler toutes les migrations, puis les exécuter à nouveau. Cela signifie qu'il fait reculer chaque migration appliquée (exécutant la méthode `` Down () 'de chaque migration), puis exécute à nouveau la méthode `up ()' pour chaque migration pour reconstruire le schéma de la base de données à partir de zéro.
- ce qu'il fait:
- Faire du dos à toutes les migrations (annule tous les changements de schéma).
- Repose toutes les migrations pour reconstruire le schéma de la base de données.
- Cas d'utilisation typiques:
- Utile lorsque vous souhaitez réinitialiser le schéma de la base de données tout en gardant la structure de la base de données cohérente par le biais de migrations.
- Permet de tester les migrations pour s'assurer qu'elles peuvent être appliquées proprement plusieurs fois.
- Souvent combinée avec l'option `` --seed` (`PHP Artisan Migrate: Refresh --seed`) pour repeupler la base de données avec des données de semences après les reconstruire.
- Avantages:
- maintient la structure de la base de données cohérente grâce à une application appropriée des méthodes `down ()` et `up () '.
- peut actualiser sélectivement un nombre limité de migrations à l'aide de l'option `--step` (par exemple,` PHP Artisan Migrate: Refresh --Step = 5` va reculer et redire les cinq dernières migrations).
- Performance:
- Peut être plus lent que `migrate: Fresh" lorsqu'il s'agit d'un grand nombre de migrations car il exécute la méthode `` down () 'pour chaque migration avant de les réappliquer.
- Données:
- Puisqu'il recule toutes les migrations, les données dans les tables seront perdues à moins que la réévaluation.
- Préserve la logique de recul définie dans les migrations, afin qu'elle puisse empêcher les incohérences si les migrations baissées sont soigneusement écrites.
migrer: réinitialiser
La commande `PHP Artisan Migrate: Reset` annule toutes les migrations qui ont été appliquées, renvoyant la base de données à son état d'origine non migré.
- ce qu'il fait:
- annule toutes les migrations en exécutant la méthode «down ()» de chaque migration.
- Contrairement à «Rafraîchissement», il ne relance pas les migrations.
- Cas d'utilisation typiques:
- Utile lorsque vous souhaitez annuler complètement toutes les migrations sans les réappliquer.
- Aide dans les scénarios où vous devez effacer complètement le schéma avant de décider quoi faire ensuite.
- Avantages:
- élimine tous les changements de schéma de base de données basés sur la migration.
- Données:
- Comme pour «rafraîchir», le retournement des migrations entraîne la perte de données de table.
- Aucun schéma existera une fois toutes les migrations réinitialisées.
- Comportement:
- Laisse la base de données dans un état non migré.
- nécessite une exécution manuelle de «PHP Artisan migrate» par la suite si elle a l'intention de reconstruire le schéma.
Contexte supplémentaire: migrer: une nouvelle comparaison
Bien qu'il ne soit pas demandé directement, la commande `` Migrate: Fresh 'est souvent confondue avec `` Rafraîchissement' 'et «réinitialisation» et aide à clarifier les différences davantage:
- `PHP Artisan Migrate: Fresh` dépose directement toutes les tables de la base de données, sans exécuter les méthodes` down () ', puis exécute toutes les migrations.
- C'est plus rapide car au lieu de faire reculer la migration par migration, il laisse tomber toutes les tables.
- Idéal pour les environnements de développement où l'essuyage de la base de données propre sans logique de retour en arrière est acceptable.
- Comme «Rafraîchissement», il peut être combiné avec «--seed» pour repeupler les données (par exemple, `migrer: fraîche --seed»).
Explication plus profonde des différences
- Comment se produit le retour en arrière:
- `` Refresh 'et «réinitialisation» reposent tous deux sur les méthodes «Down ()» de chaque migration vers l'annulation des changements de schéma.
- `` Réinitialiser 'recule tout et s'arrête.
- `Rafraîchissement 'recule tout, puis migre à nouveau.
- État de la base de données après commande:
- Après «réinitialisation», le schéma de base de données est vide (pas de tableaux de migrations).
- Après `` Rafraîchissement '', le schéma de la base de données est reconstruit comme s'il était fraîchement migré.
- Perte de données:
- Les deux commandes provoquent une perte de données car toutes les migrations sont entièrement en arrière.
- `Rafraîchissement 'peut réintroduire automatiquement les données de graines si l'indicateur` `--seed` est utilisé.
- Cas d'utilisation dans le cycle de vie du développement:
- Utilisez `` Rafraîchissement 'lors du développement ou des tests de migrations et vous souhaitez reconstruire votre schéma tout en réensemesant les données.
- Utilisez «réinitialiser» pour éliminer complètement le schéma de migration avant d'appliquer de nouvelles migrations manuellement ou de faire une migration fraîche.
Notes pratiques pour les développeurs de Laravel
- Les deux commandes dépendent de migrations correctement scénarisées avec des méthodes `up ()` et `down ()`, ce qui signifie que si les méthodes `down () 'sont manquantes ou incomplètes, les commandes de rollback (` rafraîchissement' et `réinitialisationw) peuvent échouer ou laisser la base de données dans un état incohérent.
- `` Rafraîchissement 'peut être considéré comme plus sûr que «frais» dans des environnements où vous souhaitez respecter la logique de retour et les relations de données potentielles pendant l'annulation de la migration.
- Aucune des commandes ne doit être utilisée sans prétention sur les bases de données de production sans sauvegardes, car toutes les données seront perdues.
- Ils sont principalement conçus pour une utilisation dans des environnements de développement ou de test locaux où l'itération du schéma est fréquente et les données peuvent être réinitialisées sans conséquence.
Résumé
La distinction clé est:
- Migrer: actualiser - faire reculer toutes les migrations, puis exécuter toutes les migrations.
- Migrer: réinitialiser - faire reculer toutes les migrations mais ne pas les redire.
«Migrer: rafraîchir» reconstruit efficacement le schéma à partir de zéro via Rollback et Migrate, permettant la réensemencement et la rafraîchissement par étapes, tandis que «Migrate: Reset» renvoie simplement la base de données vers un état non migré.
Les deux commandes sont des outils fondamentaux pour les développeurs de Laravel pour gérer les versions de base de données, mais ils servent différents flux de travail et ont des impacts uniques sur l'état de la base de données.
Cette compréhension aide à choisir la bonne commande pour différentes étapes du développement, des tests et du déploiement des applications.
Chaque utilisation devrait prendre en compte les implications pour la perte de données, la cohérence du schéma d'application et l'intention des développeurs pour gérer les migrations de la base de données dans un projet Laravel.