Codeigniter Множественные подключения к базе данных

#php #database #codeigniter #activerecord

#php #База данных #codeigniter #activerecord

Вопрос:

Я погружаюсь в использование нескольких баз данных. В соответствии с руководством пользователя codeigniter. Для подключения к дополнительным базам данных используйте следующее

 $db2 = $this->load->database('second');
  

затем для взаимодействия используйте,

 $db2->get('second_table');
  

Я получаю сообщение о неустранимой ошибке вызова функции-члена «where()» для не-объекта.

для следующей строки

 $db2->where('field1', $data['item']);
  

а также для

 $db2->get('second_table');
  

Где я ошибаюсь в этом?

Спасибо за любую помощь.

Комментарии:

1. Вы уверены, что установлен $db2? В документах CI говорится, что вы должны установить второй параметр true равным, чтобы вернуть объект базы данных. codeigniter.com/user_guide/database/connecting.html

Ответ №1:

Чтобы вернуть объект базы данных, вам необходимо передать значение TRUE в качестве второго параметра:

 $db2 = $this->load->database('second', TRUE);
  

См. Руководство по классу базы данных для получения дополнительной информации.

Также убедитесь, что вы загрузили конфигурацию для этой базы данных в application/config/database.php

 $db['default']['hostname'] = 'localhost';
//.........

$db['second']['hostname'] = 'localhost';
//..........
  

Комментарии:

1. да, пропустил TRUE, дух:/ Спасибо!

Ответ №2:

В config/database.php

/

 * DB1 */
$active_group = "forum";
$active_record = TRUE;

$db['DB1']['hostname'] = "xxxxx";
$db['DB1']['username'] = "xxxxx";
$db['DB1']['password'] = "xxxxx";
$db['DB1']['database'] = "xxxxx";
and other configs....

/* DB2 */

$db['DB2']['hostname'] = "xxxxx";
$db['DB2']['username'] = "xxxxx";
$db['DB2']['password'] = "xxxxx";
$db['DB2']['database'] = "xxxxx";
$db['DB2']['dbdriver'] = "mysql";
$db['DB2']['dbprefix'] = "";
and so on...
  

вы можете использовать базы данных с помощью

 $this->DB1 = $this->CI->load->database('DB1', TRUE);
$this->DB2 = $this->CI->load->database('DB2', TRUE);  
  

Комментарии:

1. другой инициализируется в модели.. это можно использовать в библиотеке, если вы хотите ее создать 🙂 или другой способ использования.. обратите внимание на $this-> CI это означает, что я получаю экземпляр CI, чтобы я мог использовать его в качестве помощника или библиотеки..