Для реализации одной задачи на CodeIgniter, мне понадобилось соединяться с двумя базами одновременно. Данные нужно было обработать в контролере и передать в представление.
В данном посте я решил написать, как это можно сделать.
Для реализации задуманного нам необходимо изменить файл конфигурации базы данных находится он в application/config/database.php
Ниже вариант моей конфигурации, Вы можете использовать другие группы или типы баз данных для подключения.
$active_group = "db_mysql";
$active_record = true;
$db['db_mysql']['hostname'] = "localhost";
$db['db_mysql']['username'] = "root";
$db['db_mysql']['password'] = "";
$db['db_mysql']['database'] = "database_name";
$db['db_mysql']['dbdriver'] = "mysql";
$db['db_mysql']['dbprefix'] = "";
$db['db_mysql']['pconnect'] = TRUE;
$db['db_mysql']['db_debug'] = FALSE;
$db['db_mysql']['cache_on'] = FALSE;
$db['db_mysql']['cachedir'] = "";
$db['db_mysql']['char_set'] = "utf8";
$db['db_mysql']['dbcollat'] = "utf8_general_ci";
$db['db_mysql']['swap_pre'] = "";
$db['db_mysql']['autoinit'] = TRUE;
$db['db_mysql']['stricton'] = FALSE;
$db['db_postgres']['hostname'] = "localhost";
$db['db_postgres']['username'] = "postgres";
$db['db_postgres']['password'] = "";
$db['db_postgres']['database'] = "database_name";
$db['db_postgres']['dbdriver'] = "postgres";
$db['db_postgres']['dbprefix'] = "";
$db['db_postgres']['pconnect'] = TRUE;
$db['db_postgres']['db_debug'] = FALSE;
$db['db_postgres']['cache_on'] = FALSE;
$db['db_postgres']['cachedir'] = "";
$db['db_postgres']['char_set'] = "utf8";
$db['db_postgres']['dbcollat'] = "utf8_general_ci";
$db['db_postgres']['swap_pre'] = "";
$db['db_postgres']['autoinit'] = TRUE;
$db['db_postgres']['stricton'] = FALSE;
$db['db_postgres']['port'] = 5432;
Теперь не много пояснений относительно конфигурации.
Задаем группу по умолчанию.
$active_group = «db_mysql»;
Включаем класс Active Record.
$active_record = true;
Далее настойки подключения к базам данных, у Вас они будут свои.
Теперь в контролере, который будет использовать эти базы данных необходимо их подключить. Сделать это можно так.
$db_mysql = $this->load->database(‘db_mysql’, TRUE);
$db_postgres = $this->load->database(‘db_postgres’, TRUE);
Теперь запросы к базам можно выполнять так.
$query_mysql = $db_mysql->query(«SELECT * FROM tables»);
$data[‘result_mysql’] = $query_mysql->result_array();
$query_postgres = $db_postgres->query(«SELECT * FROM tables»);
$data[‘result_postgres’] = $query_postgres->result_array();
Ну и передаем в представление стандартным способом.
$this->load->view(‘views_name’, $data);
Ну а в представлении можно уже сделать так к примеру.
foreach ($result_mysql as $row) {
print $row[‘name’];
}
В общем все полностью зависит от Вашей фантазии.