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')); }
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éeDatabaseMiddleware
: 🎜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!