Pengenalan
Aplikasi moden selalunya memerlukan akses kepada berbilang pangkalan data untuk mengurus sumber data yang pelbagai . Laravel memudahkan proses ini dengan menyediakan pelbagai ciri untuk menyepadukan berbilang pangkalan data dengan lancar ke dalam aplikasi anda.
Menggunakan Fasad DB
Untuk mewujudkan sambungan ke pangkalan data yang berbeza dalam Laravel, memanfaatkan kaedah sambungan fasad DB. Setiap sambungan yang anda tentukan sepadan dengan entri konfigurasi dalam fail config/database.php anda.
Mendefinisikan Sambungan Pangkalan Data
Konfigurasikan sambungan pangkalan data menggunakan .env atau config/database fail .php. Berikut ialah contoh menggunakan .env:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=mysql_database DB_USERNAME=root DB_PASSWORD=secret DB_CONNECTION_PGSQL=pgsql DB_HOST_PGSQL=127.0.0.1 DB_PORT_PGSQL=5432 DB_DATABASE_PGSQL=pgsql_database DB_USERNAME_PGSQL=root DB_PASSWORD_PGSQL=secret
Dalam config/database.php, anda boleh mentakrifkan sambungan seperti berikut:
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST'), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD') ], 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST_PGSQL'), 'database' => env('DB_DATABASE_PGSQL'), 'username' => env('DB_USERNAME_PGSQL'), 'password' => env('DB_PASSWORD_PGSQL') ]
Bekerja dengan Pelbagai Pangkalan Data
Selepas menentukan sambungan anda, anda boleh mengaksesnya menggunakan kaedah sambungan, seperti yang berikut contoh:
// Database operations on 'mysql' database $users = DB::connection('mysql')->select(...); // Database operations on 'pgsql' database $orders = DB::connection('pgsql')->select(...);
Skema, Migrasi dan Pembina Pertanyaan
Untuk melaksanakan operasi skema, migrasi atau pembina pertanyaan pada pangkalan data tertentu, nyatakan sambungan menggunakan kaedah sambungan:
// Schema operations on 'pgsql' database Schema::connection('pgsql')->create('some_table', function($table) {}); // Migrations on 'mysql' database Artisan::call('migrate', ['--connection' => 'mysql']); // Query builder operations on 'pgsql' database $results = DB::connection('pgsql')->select(...);
Model dan Eloquent
Untuk menggunakan pangkalan data khusus untuk model anda atau operasi Eloquent, tetapkan sifat $connection dalam model anda:
// Model using 'pgsql' database class User extends Model { protected $connection = 'pgsql'; }
Pengurusan Transaksi
Untuk melaksanakan transaksi merentas berbilang pangkalan data, gunakan transaksi kaedah:
DB::transaction(function () { DB::connection('mysql')->table('users')->update(['name' => 'John']); DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']); });
Pemilihan Sambungan Masa Jalan
Anda juga boleh menukar sambungan pangkalan data secara dinamik menggunakan kaedah setConnection atau kaedah on statik:
// Runtime connection change $someModel = new SomeModel; $someModel->setConnection('pgsql'); // Static connection change $something = SomeModel::on('pgsql')->find(1);
Nota: Berhati-hati apabila mewujudkan perhubungan antara jadual merentas pangkalan data. Ia mungkin tetapi mungkin memperkenalkan kerumitan.
Atas ialah kandungan terperinci Bagaimana untuk Menyambung dan Mengurus Pelbagai Pangkalan Data dengan Cekap dalam Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!