Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menguruskan Pelbagai Sambungan Pangkalan Data dalam Laravel?
Apabila bekerja dengan aplikasi Laravel, adalah perkara biasa untuk menghadapi situasi di mana berbilang pangkalan data diperlukan. Dalam kes sedemikian, adalah penting untuk memahami cara mengurus dan berinteraksi secara berkesan dengan pangkalan data ini dalam aplikasi Laravel anda.
Laravel menyediakan fasad DB, yang berfungsi sebagai titik pusat untuk mengakses sambungan pangkalan data yang berbeza. Dengan menggunakan kaedah sambungan yang disediakan oleh fasad DB, pembangun boleh mewujudkan dan mendapatkan semula sambungan kepada berbilang pangkalan data. Kaedah sambungan menjangkakan parameter yang sepadan dengan nama sambungan yang ditakrifkan dalam fail konfigurasi config/database.php.
$users = DB::connection('foo')->select(...);
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
Menggunakan config/database.php:
'mysql' => [ 'driver' => env('DB_CONNECTION'), 'host' => env('DB_HOST'), 'port' => env('DB_PORT'), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD'), ], 'pgsql' => [ 'driver' => env('DB_CONNECTION_PGSQL'), 'host' => env('DB_HOST_PGSQL'), 'port' => env('DB_PORT_PGSQL'), 'database' => env('DB_DATABASE_PGSQL'), 'username' => env('DB_USERNAME_PGSQL'), 'password' => env('DB_PASSWORD_PGSQL'), ],
Tanpa .env (Laravel <= 4.0):
return array( 'default' => 'mysql', 'connections' => array( 'mysql' => array( 'driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'mysql_database', 'username' => 'root', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 'pgsql' => [ 'driver' => 'pgsql', 'host' => 'localhost', 'port' => '5432', 'database' => 'pgsql_database', 'username' => 'root', 'password' => 'secret', 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', ] ), );<h3>Pertanyaan dan Model Manipulasi</h3> <p><strong>Skema</strong>:</p> <p>Kaedah sambungan boleh digunakan untuk menentukan pangkalan data untuk operasi skema:</p> <pre class="brush:php;toolbar:false">Schema::connection('pgsql')->create('some_table', function($table){ ... });
Pertanyaan Pembina:
$users = DB::connection('pgsql')->select(...);
Model:
Sambungan boleh ditakrifkan secara eksplisit dalam model kelas:
class ModelName extends Model { protected $connection = 'pgsql'; }
Fasih:
class SomeModel extends Eloquent { protected $connection = 'pgsql'; }
Transaksi juga boleh diuruskan merentas berbilang pangkalan data:
DB::transaction(function () { DB::connection('mysql')->table('users')->update(...); DB::connection('pgsql')->table('orders')->update(...); });
Sambungan boleh ditetapkan secara dinamik:
$someModel = new SomeModel; $someModel->setConnection('pgsql'); // non-static $something = $someModel->find(1); $something = SomeModel::on('pgsql')->find(1); // static
Apabila berurusan dengan perhubungan merentas pangkalan data yang berbeza, berhati-hati. Ia mungkin tetapi mungkin memerlukan pertimbangan yang teliti terhadap persediaan dan tetapan pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Menguruskan Pelbagai Sambungan Pangkalan Data dalam Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!