Для реализации одной задачи на 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’];
}

В общем все полностью зависит от Вашей фантазии.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь