Maison  >  Article  >  cadre php  >  À propos de la migration améliorée des données de schéma de Laravel

À propos de la migration améliorée des données de schéma de Laravel

藏色散人
藏色散人avant
2020-09-01 13:24:401844parcourir

Ce qui suit est une introduction à la migration améliorée des données de schéma de Laravel à partir de la colonne du didacticiel Laravel. J'espère que cela sera utile aux amis dans le besoin !

À propos de la migration améliorée des données de schéma de Laravel

Idée :

Lors de la refactorisation du projet de l'entreprise, à chaque fois qu'une classe de migration est créée, une nouvelle classe de migration est ajouté Pour une table de données,
doit spécifier les cinq nouveaux champs supprimés_at, créé_at, mis à jour_at, last_operater, last_operater_id
, qui enregistrent l'heure de suppression, la nouvelle heure, l'heure de modification et le nom du dernier opérateur de chaque ligne. , le dernier identifiant de l'opérateur,

Puis-je donc le laisser créer automatiquement ces champs sans avoir à copier et coller manuellement le code moi-même ? Parfois je l'oublie même ! !

  • Première fois : améliorez la fonction de Schema, c'est-à-dire utilisez la commande d'origine pour créer des fichiers de migration : php artisan make:migration pour améliorer cette fonction, mais j'ai constaté que lorsque laravel-admin est installé par composer , de nombreux fichiers de migration provoquent des conflits.
  • La deuxième fois : Afin de résoudre ce problème de conflit, un deuxième test a été réalisé : Puisque la fonction de Schema ne peut pas être améliorée sur la commande d'origine, ajoutons une commande php artisan make : app_migration

Cependant, ce qui suit est une explication du deuxième essai.

1. Comme indiqué ci-dessous, une classe Schema est ajoutée sous app/Facade, qui définit deux méthodes pour obtenir des liens mysql. Cette méthode obtient l'objet db_extra du conteneur

À propos de la migration améliorée des données de schéma de Laravel<.>

2. Ajoutez ensuite un fournisseur de serveur de base de données sous app/providers/ pour définir comment le conteneur de services $app['db_extra'] obtient cet objet

À propos de la migration améliorée des données de schéma de Laravel

3. . Analysez le contenu de la figure 2 ci-dessous. ->l'instance singleton unique est une classe d'usine utilisée pour produire la classe db_extra, comme le montre la figure 3. Cette classe d'usine est placée dans la figure suivante

À propos de la migration améliorée des données de schéma de Laravel

4. , analyser Cette classe d'usine hérite de la classe d'usine de production du système et modifie ses fonctions. Par exemple, cette fois, s'il s'agit d'un objet de connexion au service mysql connecté, je le laisserai instancier mon propre objet de connexion msyql défini, comme le montre la figure 4<.>

À propos de la migration améliorée des données de schéma de Laravel

5. Ensuite, dans cette classe MysqlExtraConnection.php, je remplace à nouveau la méthode de la classe parent, et lorsque la commande est exécutée pour ajouter un nouvelle classe de migration, créez un fichier de migration selon le modèle de migration que j'ai défini

À propos de la migration améliorée des données de schéma de Laravel6 Ensuite, définissez les champs que nous souhaitons ajouter par défaut, comme indiqué dans la figure 6<.>

À propos de la migration améliorée des données de schéma de Laravel

7. Ensuite, définissez une commande appelée make:app_migration Notez que dans la deuxième image ci-dessous, MigrationCreatorExt dépend de l'injection de son propre nouveau. classe. A quoi sert cette classe ? Utilisé pour générer des caractères dans le fichier de migration nouvellement ajouté, À propos de la migration améliorée des données de schéma de Laravel

À propos de la migration améliorée des données de schéma de Laravel

Créez un modèle et modifiez le modèle, comme indiqué ci-dessousÀ propos de la migration améliorée des données de schéma de Laravel

9. Dans le modèle create.stub, je l'ai laissé appeler la classe Schema que j'ai définie par défaut, et j'ai noté dans les commentaires que les champs ajoutés par défaut

À propos de la migration améliorée des données de schéma de Laravel

10. C'est fait. C'est un peu compliqué à configurer, mais c'est vraiment facile à développer. Y a-t-il une meilleure façon d'en discuter dans les commentaires, hehe

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer