Используем две базы в Codeigniter 2.1.0 одновременно

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

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

Продвижение сайтов Одесса от компании «Оптимум». Сайт должен не просто быть создан а приносить прибыль.

Согласование наружной рекламы в Санкт-Петербурге — экономим нервы и время.

Это стоит почитать:

Поделись с друзьями:


Запись опубликована в рубрике Веб мастеру на заметку с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>