У меня проблема с несколькими подключениями db в Codeigniter. На моем database.php я настроил две базы данных.
$active_group = 'cms'; $active_record = FALSE; $db['cms']['hostname'] = 'localhost'; $db['cms']['username'] = 'yoloo_cms'; $db['cms']['password'] = 'password'; $db['cms']['database'] = 'yoloo_cms'; $db['cms']['dbdriver'] = 'mysql'; $db['cms']['dbprefix'] = ''; $db['cms']['pconnect'] = TRUE; $db['cms']['db_debug'] = TRUE; $db['cms']['cache_on'] = FALSE; $db['cms']['cachedir'] = ''; $db['cms']['char_set'] = 'utf8'; $db['cms']['dbcollat'] = 'utf8_general_ci'; $db['cms']['swap_pre'] = ''; $db['cms']['autoinit'] = TRUE; $db['cms']['stricton'] = FALSE; $db['hazeleger']['hostname'] = 'localhost'; $db['hazeleger']['username'] = 'yoloo_websites'; $db['hazeleger']['password'] = 'password2'; $db['hazeleger']['database'] = 'yoloo_hazeleger'; $db['hazeleger']['dbdriver'] = 'mysql'; $db['hazeleger']['dbprefix'] = ''; $db['hazeleger']['pconnect'] = TRUE; $db['hazeleger']['db_debug'] = TRUE; $db['hazeleger']['cache_on'] = FALSE; $db['hazeleger']['cachedir'] = ''; $db['hazeleger']['char_set'] = 'utf8'; $db['hazeleger']['dbcollat'] = 'utf8_general_ci'; $db['hazeleger']['swap_pre'] = ''; $db['hazeleger']['autoinit'] = TRUE; $db['hazeleger']['stricton'] = FALSE;
В моей модели я использую это, когда хочу подключиться к другому db, чем обычный:
function __construct() { parent::__construct(); $this->load->database('hazeleger',TRUE); }
Но в любое время codeigniter подключается к cms. Когда я удаляю
$active_group = 'cms'; $active_record = FALSE;
Ошибка кодирования приводит к ошибке. Когда я попробовал это
function __construct() { parent::__construct(); $db2 = $this->load->database('hazeleger',TRUE); } function test() { $query = "SELECT * FROM cms_modules"; $result = $db2->db->query($query); return $db2->result(); }
Это дает ошибку. Variabele db2 не существует. Я просто хочу выбрать, на каждой модели, с которой я хочу подключиться. Но не работает. Кто-нибудь знает, как я могу работать с разными базами данных на моделях.
Большое спасибо!!
Вы должны сохранить переменную $ db2 как поле класса. Вы можете получить доступ к $ this-> db2 …
Это происходит потому, что вы, скорее всего, установили в /application/config/autoload.php, что библиотека базы данных автоматически загружается / создается.
Откройте autoload.php и найдите эту строку:
$autoload['libraries'] = array('database');
Удалите «базу данных» из массива и сохраните. Теперь он должен работать в ваших контроллерах по назначению.
для ссылки будущих посетителей, загрузка будет осуществляться по следующим направлениям:
$this->db2 = $this->load->database('hazeleger',true);
Вы должны изменить класс db2
$query = "SELECT * FROM cms_modules"; $result = $this->db2->query($query); return result();