Codeigniter 3 несколько соединений с базой данных с помощью dbforge

Я создаю веб-приложение с CI 3, я должен использовать 2 разных подключения к базе данных для определенных требований. Я загрузил конфигурацию в файл database.php и, конечно, могу подключиться к ним, используя встроенные классы.

$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'primary',
'dbdriver' => 'mysqli'
);

$db['customer'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root_1',
'password' => 'root_1',
'database' => 'secondary',
'dbdriver' => 'mysqli'

);

Я использую MY_Model из Вот. Поэтому я расширяю их следующим образом ..

class Table extends MY_Model
{


public function __construct()
{

parent::__construct();

$this->_database = $this->load->database('customer', TRUE);
}

public function create_table()
{
return $this->_database->query("CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)");

}

}

Но мне нужно использовать dbForge для создания таблиц. Но только соединение по умолчанию используется с классом dbForge. Документация Codeigniter dbForge не позволяет загружать различные соединения db в dbForge. Кто-нибудь знает, как решить проблему элегантно?

2

Решение

После небольшого исследования я нашел правильный способ сделать это.

$this->load->dbForge() может фактически принимать параметр. Если мы передадим объект базы данных, он будет использовать это соединение для выполнения операции.

Кроме того, мы можем передать второй аргумент и получить отдельный объект.

$this->dbForgeSecondary = $this->load->dbforge($this->_database, TRUE);

Легко & Довольно круто.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]