Maison  >  Article  >  développement back-end  >  Middleware Laravel : ajoutez la migration de bases de données et la gestion des versions à votre application

Middleware Laravel : ajoutez la migration de bases de données et la gestion des versions à votre application

王林
王林original
2023-08-02 10:17:121006parcourir

Middleware Laravel : ajoutez la migration de bases de données et la gestion des versions aux applications

Lors du développement et de la maintenance d'une application Web, la migration de bases de données et la gestion des versions sont une tâche très importante. Ils nous permettent de gérer facilement la structure et les données de la base de données sans avoir à mettre à jour ou reconstruire manuellement la base de données. Le framework Laravel fournit des fonctions puissantes et pratiques de migration de bases de données et de gestion de versions. En utilisant un middleware, nous pouvons intégrer plus facilement ces fonctions dans nos applications.

Tout d'abord, nous devons nous assurer que notre projet Laravel est installé et fonctionne correctement. Dans cet article, nous nous concentrerons sur la façon d'utiliser le middleware Laravel pour ajouter des fonctionnalités de migration de bases de données et de gestion de versions à nos applications.

Tout d'abord, nous devons introduire le package illuminate/database dans notre projet. Ouvrez le fichier composer.json du projet et ajoutez le code suivant : illuminate/database包。打开项目的composer.json文件并添加以下代码:

"require": {
    "illuminate/database": "^8.0"
}

保存文件后,在命令行中运行composer update命令以安装该包。

接下来,我们需要在Laravel项目的config/app.php文件中配置我们的数据库连接。在databases数组中添加以下代码:

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
],

确保你已经设置了正确的数据库连接参数,并保存文件。

现在,我们将创建一个中间件来处理数据库迁移和版本管理。在命令行中,输入以下命令创建一个名为DatabaseMiddleware的中间件类:

php artisan make:middleware DatabaseMiddleware

此命令将在app/Http/Middleware目录下创建一个名为DatabaseMiddleware.php的文件。打开该文件,并使用以下代码替换其中的内容:

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateDatabaseMigrationsMigrator;

class DatabaseMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $migrator = new Migrator(app('db'), app('migration.repository'));

        if ($this->needsMigration($migrator)) {
            $migrator->run(database_path('migrations'));
        }

        if ($this->needsSeeding($migrator)) {
            $migrator->run(database_path('seeds'));
        }

        return $next($request);
    }

    /**
     * Determine if the database needs to be migrated.
     *
     * @param  IlluminateDatabaseMigrationsMigrator  $migrator
     * @return bool
     */
    protected function needsMigration($migrator)
    {
        return count($migrator->pendingMigrations()) > 0;
    }

    /**
     * Determine if the database needs to be seeded.
     *
     * @param  IlluminateDatabaseMigrationsMigrator  $migrator
     * @return bool
     */
    protected function needsSeeding($migrator)
    {
        return $migrator->repositoryExists() && !$migrator->repositoryHasSeeded();
    }
}

上述代码中,我们创建了一个名为DatabaseMiddleware的中间件类。在handle方法中,我们使用Migrator类来执行数据库迁移和版本管理操作。如果有未执行的迁移,我们将运行run方法来执行这些迁移。类似地,如果尚未进行过数据填充,我们将运行run方法来进行数据填充。

接下来,我们需要在应用程序的中间件配置文件中注册我们的中间件。打开app/Http/Kernel.php文件,在$routeMiddleware数组中添加以下代码:

'database' => AppHttpMiddlewareDatabaseMiddleware::class,

保存文件后,我们的中间件已经注册到应用程序中了。

最后,我们需要在我们的路由或控制器中使用我们的中间件。假设我们要将数据库迁移和版本管理应用于所有路由,我们可以在web中间件组中使用database中间件。打开app/Providers/RouteServiceProvider.php文件,将以下代码添加到mapWebRoutes

protected function mapWebRoutes()
{
    Route::middleware('web', 'database') // 添加 'database' 中间件
        ->namespace($this->namespace)
        ->group(base_path('routes/web.php'));
}

Après avoir enregistré le fichier, exécutez la commande composer update sur la ligne de commande pour installer le package.

Ensuite, nous devons configurer notre connexion à la base de données dans le fichier config/app.php du projet Laravel. Ajoutez le code suivant dans le tableau databases :

rrreee

Assurez-vous d'avoir défini les paramètres de connexion à la base de données corrects et enregistrez le fichier.

Maintenant, nous allons créer un middleware pour gérer la migration des bases de données et la gestion des versions. Dans la ligne de commande, entrez la commande suivante pour créer une classe middleware nommée DatabaseMiddleware : 🎜rrreee🎜Cette commande créera une classe nommée Le fichier de DatabaseMiddleware.php. Ouvrez le fichier et remplacez son contenu par le code suivant : 🎜rrreee🎜Dans le code ci-dessus, nous avons créé une classe middleware nommée DatabaseMiddleware. Dans la méthode handle, nous utilisons la classe Migrator pour effectuer les opérations de migration de base de données et de gestion des versions. S'il y a des migrations non exécutées, nous exécuterons la méthode run pour exécuter ces migrations. De même, si le remplissage des données n'a pas encore été effectué, nous exécuterons la méthode run pour effectuer le remplissage des données. 🎜🎜Ensuite, nous devons enregistrer notre middleware dans le fichier de configuration du middleware de l'application. Ouvrez le fichier app/Http/Kernel.php et ajoutez le code suivant dans le tableau $routeMiddleware : 🎜rrreee🎜Après avoir enregistré le fichier, notre middleware a été enregistré dans le application . 🎜🎜Enfin, nous devons utiliser notre middleware dans notre route ou notre contrôleur. Supposons que nous souhaitions appliquer la migration de base de données et le contrôle de version à toutes les routes, nous pouvons utiliser le middleware database dans le groupe de middlewares web. Ouvrez le fichier app/Providers/RouteServiceProvider.php et ajoutez le code suivant à la méthode mapWebRoutes : 🎜rrreee🎜Après avoir enregistré le fichier, nous avons intégré avec succès la migration et la version de la base de données. logiciel de gestion dans notre application. 🎜🎜Avec les étapes ci-dessus, nous avons utilisé avec succès le middleware Laravel pour la migration de bases de données et la gestion des versions. Chaque fois que nous accédons à notre application, le middleware vérifie si la base de données doit être migrée ou versionnée et effectue ces opérations si nécessaire. 🎜🎜J'espère que cet article vous sera utile pour utiliser Laravel pour la migration de bases de données et la gestion des versions. Le middleware fournit un moyen pratique d'intégrer ces fonctions dans nos applications, rendant notre travail de développement et de maintenance plus efficace et plus simple. 🎜

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