1. 程式人生 > >如何在 Laravel 中連線多個 MySQL 資料庫

如何在 Laravel 中連線多個 MySQL 資料庫

 

第一步、定義資料庫連結

config/database.php

<?php
return [

    'default' => 'mysql', 'connections' => [ # 主要資料庫連線 'mysql' => [ 'driver' => 'mysql', 'host' => 'host1', 'database' => 'database1', 'username' => 'user1', 'password' => 'pass1', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', ], # 第二個連結 'mysql2' => [ 'driver' => 'mysql', 'host' => 'host2', 'database' => 'database2', 'username' => 'user2', 'password' => 'pass2', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', ] ], ];
 

第二步、連線第二個資料庫

我們已經成功配置了第二個資料庫連結,接下來講解幾種連線的方法。

 

1. Schema 表結構更改

在程式碼遷移時,可以使用 Schema 提供的 connection() 方法:

Schema::connection('mysql2')->create('some_table', function($table) { $table->increments('id'): });
 

2. Query 資料庫查詢

同樣的,資料庫查詢構造器裡提供了一個 connection()

 方法:

$users = DB::connection('mysql2')->select(...);
 

3. Eloquent 資料模型

使用 $connection 屬性來設定預設的連線:

<?php

class SomeModel extends Eloquent { protected $connection = 'mysql2'; }

你可以可以使用 setConnection 來動態設定連線:

<?php

class SomeController extends BaseController { public function someMethod() { $someModel = new SomeModel; $someModel->setConnection('mysql2'); $something = $someModel->find(1); return $something; } }

或者使用 on() 方法:

$someModel->on('mysql2')->find(1);