Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perisian tengah Laravel: Tambahkan pemindahan pangkalan data dan pengurusan versi pada aplikasi anda

Perisian tengah Laravel: Tambahkan pemindahan pangkalan data dan pengurusan versi pada aplikasi anda

王林
王林asal
2023-08-02 10:17:121019semak imbas

Laravel middleware: Tambahkan migrasi pangkalan data dan pengurusan versi pada aplikasi

Apabila membangun dan menyelenggara aplikasi web, migrasi pangkalan data dan pengurusan versi adalah tugas yang sangat penting. Ia membolehkan kami mengurus struktur dan data pangkalan data dengan mudah tanpa perlu mengemas kini atau membina semula pangkalan data secara manual. Rangka kerja Laravel menyediakan pemindahan pangkalan data dan fungsi pengurusan versi yang berkuasa dan mudah Dengan menggunakan perisian tengah, kami boleh menyepadukan fungsi ini dengan lebih mudah ke dalam aplikasi kami.

Pertama, kami perlu memastikan projek Laravel kami dipasang dan berjalan dengan betul. Dalam artikel ini, kami akan menumpukan pada cara menggunakan perisian tengah Laravel untuk menambah pemindahan pangkalan data dan keupayaan pengurusan versi pada aplikasi kami.

Pertama, kami perlu memperkenalkan pakej illuminate/database ke dalam projek kami. Buka fail composer.json projek dan tambah kod berikut: 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'));
}

Selepas menyimpan fail, jalankan perintah composer update pada baris arahan untuk memasang pakej.

Seterusnya, kami perlu mengkonfigurasi sambungan pangkalan data kami dalam fail config/app.php projek Laravel. Tambahkan kod berikut dalam tatasusunan pangkalan data:

rrreee

Pastikan anda telah menetapkan parameter sambungan pangkalan data yang betul dan simpan fail.

Kini, kami akan mencipta perisian tengah untuk mengendalikan pemindahan pangkalan data dan pengurusan versi. Dalam baris arahan, masukkan arahan berikut untuk mencipta kelas middleware bernama DatabaseMiddleware: 🎜rrreee🎜Arahan ini akan mencipta kelas bernama Fail DatabaseMiddleware.php. Buka fail dan gantikan kandungannya dengan kod berikut: 🎜rrreee🎜Dalam kod di atas, kami mencipta kelas middleware bernama DatabaseMiddleware. Dalam kaedah handle, kami menggunakan kelas Migrator untuk melaksanakan penghijrahan pangkalan data dan operasi pengurusan versi. Jika terdapat migrasi yang tidak dilaksanakan, kami akan menjalankan kaedah run untuk melaksanakan migrasi ini. Begitu juga, jika pengisian data masih belum dilakukan, kami akan menjalankan kaedah run untuk melakukan pengisian data. 🎜🎜Seterusnya, kami perlu mendaftarkan middleware kami dalam fail konfigurasi middleware aplikasi. Buka fail app/Http/Kernel.php dan tambah kod berikut dalam tatasusunan $routeMiddleware: 🎜rrreee🎜Selepas menyimpan fail, middleware kami telah didaftarkan ke permohonan . 🎜🎜Akhir sekali, kami perlu menggunakan perisian tengah kami dalam laluan atau pengawal kami. Katakan kita ingin menggunakan migrasi pangkalan data dan versi pada semua laluan, kita boleh menggunakan perisian tengah pangkalan data dalam kumpulan perisian tengah web. Buka fail app/Providers/RouteServiceProvider.php dan tambahkan kod berikut pada kaedah mapWebRoutes: 🎜rrreee🎜Selepas menyimpan fail, kami telah berjaya menyepadukan migrasi pangkalan data dan versi perisian pengurusan ke dalam aplikasi kami. 🎜🎜Dengan langkah di atas, kami berjaya menggunakan perisian tengah Laravel untuk pemindahan pangkalan data dan pengurusan versi. Setiap kali kami mengakses aplikasi kami, middleware menyemak sama ada pangkalan data perlu dipindahkan atau versi dan melaksanakan operasi ini seperti yang diperlukan. 🎜🎜Semoga artikel ini dapat membantu anda dalam menggunakan Laravel untuk pemindahan pangkalan data dan pengurusan versi. Middleware menyediakan cara yang mudah untuk menyepadukan fungsi ini ke dalam aplikasi kami, menjadikan kerja pembangunan dan penyelenggaraan kami lebih cekap dan mudah. 🎜

Atas ialah kandungan terperinci Perisian tengah Laravel: Tambahkan pemindahan pangkalan data dan pengurusan versi pada aplikasi anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn