Maison  >  Article  >  cadre php  >  Comment implémenter la migration de bases de données dans ThinkPHP6 ?

Comment implémenter la migration de bases de données dans ThinkPHP6 ?

WBOY
WBOYoriginal
2023-06-12 09:30:101684parcourir

À mesure que les applications continuent d'évoluer et que les exigences continuent de changer, nous devons souvent modifier, migrer et mettre à jour la base de données pendant le processus de développement. Cependant, lors du processus de mise à jour de la base de données, si elle n'est pas soigneusement étudiée et entretenue, une série de problèmes tels que des conflits de données et des pertes de données peuvent survenir. Afin de résoudre efficacement ces problèmes, nous devons utiliser un outil professionnel de migration de bases de données pour réaliser ces opérations.

ThinkPHP6 est un framework PHP populaire pour la création d'applications Web qui fournit de nombreuses fonctionnalités et outils utiles, notamment la migration de bases de données. Cet article explique comment utiliser la fonction de migration de base de données dans ThinkPHP6.

1. Qu'est-ce que la migration de base de données ?

La migration de base de données fait référence au processus de mise à jour et de modification de la structure de la base de données lors du développement et de l'exploitation des applications. En d'autres termes, grâce à la migration de bases de données, nous pouvons ajouter, supprimer et renommer des tables de base de données et ajouter, modifier et supprimer des champs.

Dans ThinkPHP6, l'outil de migration de base de données est principalement implémenté à travers deux concepts : la classe de migration et la classe de remplissage.

2. Comment utiliser la migration de base de données ?

  1. Créer une classe de migration

Pour utiliser la migration de base de données dans ThinkPHP6, vous devez d'abord créer une classe de migration. La classe de migration est une classe PHP qui contient deux méthodes, la méthode up et la méthode down. La méthode

up est utilisée pour effectuer des opérations de migration de bases de données, telles que la création, la modification, la suppression de tables ou de champs de bases de données, etc. La méthode down est utilisée pour annuler l'opération de migration, c'est-à-dire pour annuler l'opération effectuée par la méthode up.

Ce qui suit est un exemple simple de classe de migration pour créer une table de base de données nommée utilisateurs :

<?php

use thinkmigrationdbColumn;
use thinkmigrationMigrator;

class CreateUsersTable extends Migrator
{
    public function up()
    {
        $table = $this->table('users', ['engine' => 'InnoDB', 'id' => false, 'primary_key' => 'id']);
        $table->addColumn('id', 'integer', ['signed' => false, 'identity' => true])
            ->addColumn('name', 'string', ['limit' => 32])
            ->addColumn('email', 'string', ['limit' => 128])
            ->addColumn('password', 'string', ['limit' => 60])
            ->addColumn('created_at', 'datetime')
            ->addColumn('updated_at', 'datetime')
            ->create();
    }

    public function down()
    {
        $this->table('users')->drop();
    }
}

Dans la classe de migration ci-dessus, nous créons d'abord une table de base de données nommée utilisateurs dans la méthode up et ajoutons quelques champs. Puis dans la méthode down, on supprime la table.

  1. Effectuer la migration de la base de données

Après avoir créé la classe de migration, nous devons utiliser la commande php think migrate pour effectuer l'opération de migration. Si aucune migration n'a encore été effectuée, nous devons d'abord utiliser la commande php think migrate:install pour initialiser les tables associées à la migration de la base de données.

Ensuite, nous pouvons utiliser la commande php think migrate:status pour afficher tous les statuts de migration actuels. À ce stade, nous pouvons voir que la classe de migration que nous avons créée n'a pas encore été exécutée.

Ensuite, nous pouvons utiliser la commande php think migrate:run pour effectuer l'opération de migration. À ce stade, nous pouvons voir que le système exécutera la classe de migration que nous venons de créer et affichera des informations de débogage.

Après l'exécution, nous pouvons utiliser à nouveau la commande php think migrate:status pour afficher tous les statuts de migration actuels. À ce stade, nous devrions pouvoir voir que la classe de migration que nous avons créée a été exécutée avec succès et qu'une table nommée utilisateurs a été créée dans la base de données.

Si nous devons annuler la migration que nous venons de créer, nous pouvons utiliser la commande php think migrate:rollback. Cette commande annulera la dernière opération de migration effectuée.

De plus, nous pouvons également utiliser la commande php think migrate:reset pour annuler toutes les opérations de migration qui ont été effectuées.

3. Comment utiliser la classe de remplissage ?

En plus des classes de migration, ThinkPHP6 fournit également une fonctionnalité appelée classes de remplissage. La classe fill est utilisée pour ajouter des données de test ou des données par défaut à une table de base de données déjà existante.

Semblable à la classe de migration, la classe de remplissage est également une classe PHP contenant deux méthodes, qui sont la méthode up et la méthode down.

Voici un exemple simple de classe de remplissage pour ajouter des données de test à la table de base de données nommées utilisateurs :

<?php

use thinkmigrationSeed;

class AddTestUsers extends Seed
{
    public function run()
    {
        $data = [
            [
                'name' => '张三',
                'email' => 'zhangsan@test.com',
                'password' => password_hash('123456', PASSWORD_DEFAULT),
                'created_at' => date('Y-m-d H:i:s'),
                'updated_at' => date('Y-m-d H:i:s'),
            ],
            [
                'name' => '李四',
                'email' => 'lisi@test.com',
                'password' => password_hash('123456', PASSWORD_DEFAULT),
                'created_at' => date('Y-m-d H:i:s'),
                'updated_at' => date('Y-m-d H:i:s'),
            ],
            [
                'name' => '王五',
                'email' => 'wangwu@test.com',
                'password' => password_hash('123456', PASSWORD_DEFAULT),
                'created_at' => date('Y-m-d H:i:s'),
                'updated_at' => date('Y-m-d H:i:s'),
            ],
        ];

        $this->table('users')->insert($data)->save();
    }

    public function down()
    {
        $this->execute('TRUNCATE TABLE users;');
    }
}

Dans la classe de remplissage ci-dessus, nous avons ajouté à la table de base de données en utilisant la méthode insert dans la méthode up Trois éléments de données de test . Ensuite, dans la méthode down, nous utilisons la méthode d'exécution pour supprimer ces trois données de test.

La méthode d'exécution de la classe de remplissage est similaire à la méthode d'exécution de la classe de migration. Nous pouvons utiliser la commande php think seed:run pour exécuter la méthode up de la classe de remplissage. Si vous devez annuler la tâche de classe de remplissage, vous pouvez utiliser la commande php think seed:rollback.

4. Résumé

Cet article présente la méthode d'utilisation de la migration de base de données et de remplissage dans ThinkPHP6, et montre à l'aide d'un exemple de code comment créer des classes de migration et des classes de remplissage, et comment effectuer et annuler des opérations de migration et de remplissage. Si vous développez et maintenez une application et devez modifier et mettre à jour la base de données, assurez-vous d'utiliser cet outil de migration de base de données professionnel pour garantir la sécurité et l'exactitude de vos données.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn