Sử dụng .env
> =5.0
(Đã kiểm tra trên 5.5) ( Hoạt động trên 8 )
Trong .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database1
DB_USERNAME=root
DB_PASSWORD=secret
DB_CONNECTION_SECOND=mysql
DB_HOST_SECOND=127.0.0.1
DB_PORT_SECOND=3306
DB_DATABASE_SECOND=database2
DB_USERNAME_SECOND=root
DB_PASSWORD_SECOND=secret
Trong 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'),
],
'mysql2' => [
'driver' => env('DB_CONNECTION_SECOND'),
'host' => env('DB_HOST_SECOND'),
'port' => env('DB_PORT_SECOND'),
'database' => env('DB_DATABASE_SECOND'),
'username' => env('DB_USERNAME_SECOND'),
'password' => env('DB_PASSWORD_SECOND'),
],
Lưu ý: Trong
mysql2
nếu DB_username và DB_password giống nhau, thì bạn có thể sử dụngenv('DB_USERNAME')
được đấu giá bằng.env
vài dòng đầu tiên.
Không có .env
<5.0
Xác định kết nối
app/config/database.php
return array(
'default' => 'mysql',
'connections' => array(
# Primary/Default database connection
'mysql' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database1',
'username' => 'root',
'password' => 'secret'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
# Secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database2',
'username' => 'root',
'password' => 'secret'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
Lược đồ
Để chỉ định kết nối nào sẽ sử dụng, chỉ cần chạy connection()
phương pháp
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
Trình tạo truy vấn
$users = DB::connection('mysql2')->select(...);
Hùng biện
Đặt kết nối $connection
biến trong mô hình của bạn
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
Bạn cũng có thể xác định kết nối trong thời gian chạy thông qua setConnection
hoặc on
phương thức tĩnh:
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2'); // non-static method
$something = $someModel->find(1);
$something = SomeModel::on('mysql2')->find(1); // static method
return $something;
}
}
Lưu ý Hãy cẩn thận về việc cố gắng xây dựng mối quan hệ với các bảng trên cơ sở dữ liệu! Điều này hoàn toàn có thể xảy ra, nhưng nó có thể đi kèm với một số cảnh báo và phụ thuộc vào cơ sở dữ liệu và / hoặc cài đặt cơ sở dữ liệu nào bạn có.
Từ tài liệu Laravel
Sử dụng nhiều kết nối cơ sở dữ liệu
Khi sử dụng nhiều kết nối, bạn có thể truy cập từng connection
thông qua phương thức kết nối trên DB
mặt tiền. name
được chuyển đến connection
phương thức phải tương ứng với một trong các kết nối được liệt kê trong config/database.php
của bạn tệp cấu hình:
$users = DB::connection('foo')->select(...);
Bạn cũng có thể truy cập cá thể PDO thô, cơ bản bằng cách sử dụng phương thức getPdo trên phiên bản kết nối:
$pdo = DB::connection()->getPdo();
Liên kết hữu ích
- Kết nối nhiều cơ sở dữ liệu Laravel 5 TỪ
laracasts.com
- Kết nối nhiều cơ sở dữ liệu trong laravel FROM
tutsnare.com
- Nhiều kết nối DB trong Laravel FROM
fideloper.com