Trong database.php
, tôi có HAI cấu hình cơ sở dữ liệu.Laravel - thay đổi kết nối cơ sở dữ liệu mặc định trên toàn cầu
'db1' => array(
'driver' => 'pgsql',
'host' => 'localhost',
'database' => 'db1',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
),
'db2' => array(
'driver' => 'pgsql',
'host' => 'localhost',
'database' => 'db2',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
),
Vì vậy, theo mặc định db1
được đặt làm mặc định DB ban đầu. Bây giờ tôi muốn chuyển cơ sở dữ liệu mặc định thành 'db2' bằng cách chọn một tùy chọn từ trình đơn thả xuống 'chọn'. Thao tác này sẽ gửi yêu cầu AJAX gửi đến phương thức điều khiển mà tôi thực hiện
public function postChangeDb() {
$db = Input::get('db');
Config::set('database.default', $db);
}
Sau khi hoàn tất, tôi 'làm mới' trang nhưng kết nối vẫn ở 'db1'.
Tôi cũng thử như sau
public function getTest() {
Config::set('database.default', 'db1');
$users = User::all();
echo sizeof($users); // returns 20
Config::set(database.default', 'db2');
$users = User::all();
echo sizeof($users); // returns 50 - which is correct!
}
Và trên hoạt động tốt và nó chuyển thành công cơ sở dữ liệu. Cơ sở chuyển đổi 'theo yêu cầu' có phải là cơ sở không?
vâng . đã thử. cũng đã chỉnh sửa câu hỏi của tôi. – ericbae
@ericbae Tôi đã cập nhật câu trả lời của mình –