Laravel ミドルウェア: データベースの移行とバージョン管理をアプリケーションに追加する
Web アプリケーションを開発および保守する場合、データベースの移行とバージョン管理は非常に重要なタスクです。これにより、データベースを手動で更新または再構築することなく、データベースの構造とデータを簡単に管理できるようになります。 Laravel フレームワークは強力かつ便利なデータベース移行機能とバージョン管理機能を提供しており、ミドルウェアを使用することでこれらの機能をアプリケーションに簡単に統合できます。
まず、Laravel プロジェクトがインストールされ、適切に実行されていることを確認する必要があります。この記事では、Laravel ミドルウェアを使用してデータベース移行機能とバージョン管理機能をアプリケーションに追加する方法に焦点を当てます。
まず、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')); }
ファイルを保存した後、データベースは正常に移行されました。バージョン管理ミドルウェアがアプリケーションに適用されます。
上記の手順により、Laravel ミドルウェアをデータベースの移行とバージョン管理に使用することができました。アプリケーションにアクセスするたびに、ミドルウェアはデータベースの移行またはバージョン管理が必要かどうかを確認し、必要に応じてこれらの操作を実行します。
この記事が、Laravel をデータベースの移行やバージョン管理に使用する際に役立つことを願っています。ミドルウェアは、これらの機能をアプリケーションに統合する便利な方法を提供し、開発とメンテナンスの作業をより効率的かつシンプルにします。
以上がLaravel ミドルウェア: データベースの移行とバージョン管理をアプリケーションに追加します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。