Maison  >  Article  >  développement back-end  >  Vous apprendre à utiliser l'outil de migration de base de données PHP "Phinx"

Vous apprendre à utiliser l'outil de migration de base de données PHP "Phinx"

WBOY
WBOYavant
2022-02-17 10:49:165855parcourir

Cet article partagera avec vous les connaissances pertinentes sur Phinx, l'outil de migration de bases de données dans le traitement PHPPhinx est particulièrement adapté au développement, aux tests, aux informations de champ de synchronisation de bases de données en ligne, aux informations sur les données, à la génération et à la synchronisation de données de test, etc. J'espère que cela sera utile à tout le monde.

Vous apprendre à utiliser l'outil de migration de base de données PHP

Adresse du document : https://tsy12321.gitbooks.io/phinx-doc/content

1 Installer

composer require nhzex/think-phinx

2. exécutez php supplier/ directement bin/phinx init peut générer le fichier de configuration

Une autre méthode consiste à utiliser directement le fichier php pour créer le fichier de configuration

Exécutez directement php supplier/bin/phinx init pour générer le fichier de configuration

Une autre méthode consiste à utiliser directement le php pour créer le fichier de configuration

3. Utilisez phinx.php pour configurer

php vendor/bin/phinx

4. Exécutez php supplier/bin/phinx status pour afficher l'état de la connexion

5. php supplier/bin/phinx create migration

6. Créé /db/migrations/20180310020523_migration.php est maintenant généré

Modifiez ce fichier et ajoutez le contenu de création de base de données.

<?php
$config = array(
    &#39;DB_HOST&#39; => &#39;localhost&#39;,
    &#39;DB_NAME&#39; => &#39;root&#39;,
    &#39;DB_USER&#39; => &#39;root&#39;,
    &#39;DB_PWD&#39; => &#39;&#39;,
);
$settings = $config;
#phinx.php
<?php
require &#39;db_config.php&#39;;
return array(
    "paths" => array(
        "migrations"    => "db/migrations",
        "seeds"         => "db/seeds"
    ),
    "environments"   => array(
        "defaut_migration_table"    => "phinxlog",
        "default_database"          => "lleg",
        "default_environment"       => "development"
        "production"   => array(
            "adapter"   => "mysql",
            "host"      => $settings["DB_HOST"],
            "name"      => $settings["DB_NAME"],
            "user"      => $settings["DB_USER"],
            "pass"      => $settings["DB_PWD"],
            "port"      => 3306,
            "charset"   => "utf8"
        ),
        "development"   => array(
            "adapter"   => "mysql",
            "host"      => $settings["DB_HOST"],
            "name"      => $settings["DB_NAME"],
            "user"      => $settings["DB_USER"],
            "pass"      => $settings["DB_PWD"],
            "port"      => 3306,
            "charset"   => "utf8"
        )
    )
);

7. , un identifiant auto-incrémenté sera ajouté comme clé primaire

Exécuter php supplier/bin/phinx migrate

8 Initialiser les données

Exécuter php supplier/bin/phinx seed:create CategorySeeder

. Le système crée automatiquement ./db/seeds/CategorySeeder.php

9. Modify CategorySeeder.php

Exécutez php supplier/bin/phinx seed:run et toutes les graines seront exécutées

10. Si vous souhaitez exécuter la graine spécifiée, vous devez la spécifier avec le paramètre -s

php seller/bin/phinx seed:run -s CategorySeeder

11 Mettre à jour la structure de la table

Quand. vous devez mettre à jour la structure de la table, vous devez créer une autre migration

Exécuter php supplier/bin/phinx créer ChangeArtist

Ensuite, écrivez le contenu qui doit être mis à jour dans la fonction de changement

public function change() {
        $user = $this->table(&#39;user&#39;);
        $user->addColumn(&#39;open_id&#39;, &#39;string&#39;, [&#39;limit&#39;=>64]);
        $user->addColumn(&#39;register_time&#39;, &#39;timestamp&#39;, [&#39;default&#39; => &#39;CURRENT_TIMESTAMP&#39;]);
        $user->addColumn(&#39;favorite_music&#39;, &#39;integer&#39;, [&#39;default&#39;=> 0, &#39;comment&#39;=>&#39;喜欢的音乐&#39;]);
        $user->addColumn(&#39;favorite_vedio&#39;, &#39;integer&#39;, [&#39;default&#39;=> 0, &#39;comment&#39;=>&#39;喜欢的视频数&#39;]);
        $user->addColumn(&#39;favorite_article&#39;, &#39;integer&#39;, [&#39;default&#39;=> 0, &#39;comment&#39;=>&#39;喜欢的文章数&#39;]);
        $user->addColumn(&#39;baby_birthday&#39;, &#39;date&#39;, [&#39;null&#39;=>true, &#39;comment&#39;=>&#39;宝宝生日&#39;]);
        $user->addColumn(&#39;baby_sex&#39;, &#39;boolean&#39;, [&#39;null&#39;=>true, &#39;comment&#39;=>&#39;宝宝性别&#39;]);
        $user->addColumn(&#39;last_login&#39;, &#39;datetime&#39;, [&#39;null&#39;=>true, &#39;comment&#39;=>&#39;最后登陆日期&#39;]);
        $user->save();
    }

Enfin, exécutez php supplier/bin/ phinx migrate

La migration précédemment exécutée ne sera pas exécutée, seule la partie mise à jour sera exécutée.

12. Rollback

public function change() {
        $this->execute(&#39;alter table resource drop column artist ;&#39;);
        $resource = $this->table(&#39;resource&#39;);
        $resource->addColumn(&#39;artist&#39;, &#39;string&#39;, [&#39;limit&#39;=>128, &#39;default&#39;=>&#39;&#39;]);
        $resource->update();
    }

13. Remplissage de données

php vendor/bin/phinx rollback
Générer des fichiers
php vendor/bin/phinx seed:create UserSeeder
php vendor/bin/phinx seed:run -e product

phinx est particulièrement adapté au développement, aux tests, aux informations sur les champs de synchronisation de bases de données en ligne, aux informations sur les données, à la génération et à la synchronisation. données, etc., il est donc particulièrement adapté à une utilisation dans le processus de développement en équipe, en particulier pour un nouveau projet. Tant que vous insistez pour utiliser phinx pour un déploiement indépendant au début du projet, à chaque fois que vous modifiez la table de la base de données. informations, les membres de l'équipe peuvent utiliser git ou svn. La méthode synchronise le code puis exécute la commande d'exécution mentionnée ci-dessus pour synchroniser les informations de la table de bibliothèque, évitant ainsi la pénibilité et les erreurs liées à la synchronisation des informations de la table de bibliothèque dans différents environnements de développement au cours du développement traditionnel.

Il existe un élément de configuration "default_migration_table" => "phinxlog" dans phinx.php. C'est également une mesure pour garantir qu'elles ne sont pas exécutées à plusieurs reprises, il n'y a donc pas lieu de s'inquiéter de la perte ou de la répétition. l'exécution de la commande.

Apprentissage recommandé : "

Tutoriel vidéo PHP

"

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