База данных Codeigniter подключается к нескольким базам данных в модели - PullRequest
0 голосов
/ 21 июля 2011

Чтобы преодолеть разрыв между старой системой и CodeIgniter, я расширил CI_Model в CI 2. Вот мой конструктор:

public function __construct ($pkname='', $tablename='')
{    
    parent::__construct ();
    $this->conf['pkname']   = $pkname;    //Name of auto-incremented Primary Key
    $this->conf['tablename']= $tablename; //Corresponding table in database

    $this->DBR = $this->load->database('read', TRUE);
    $this->DBW = $this->load->database('write', TRUE);
    // echo $this->DBR->conn_id
    // echo $this->DBW->conn_id
}

Если я раскомментирую две строки, повторяющие conn_id, они каждый раз будут разными. Не следует ли повторно использовать информацию о соединении? Я думаю, это означает, что я буду использовать один и тот же Resource #ID каждый раз. У меня есть pconnect = TRUE для обоих.

Resource id #24
Resource id #25
... snip ...
Resource id #127
Resource id #128

Я нахожусь в dev, так что это не большая проблема, но я не хочу переходить к производству с подключением отдельно для каждой модели. Спасибо.

1 Ответ

0 голосов
/ 21 июля 2011

Класс db_manager в этом сообщении на форуме решил проблему:

http://codeigniter.com/forums/viewthread/157298/

Я автоматически загружаю библиотеку db_manager, затем использую ее в своем классе My_Model, который расширяет CI_Model

if (!$dbh = $this->db_manager->get_connection($type))
{
    // throw exceptions etc
}


$r = mysql_query ($query, $dbh->conn_id);

Я сейчас использую mysql_query, потому что я конвертирую из другой системы и не хочу переписывать все модели прямо сейчас.В противном случае вы можете использовать класс CI Active.

Работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...