#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, чтобы я мог использовать его в качестве помощника или библиотеки..