ホームページ  >  記事  >  バックエンド開発  >  Laravel ミドルウェア: データベースの移行とバージョン管理をアプリケーションに追加します。

Laravel ミドルウェア: データベースの移行とバージョン管理をアプリケーションに追加します。

王林
王林オリジナル
2023-08-02 10:17:121009ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。