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 !
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 ! !
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
<.>
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 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 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<.>
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
6 Ensuite, définissez les champs que nous souhaitons ajouter par défaut, comme indiqué dans la figure 6<.>
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é,
Créez un modèle et modifiez le modèle, comme indiqué ci-dessous
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 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, heheCe 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!