Конфигурация для работы с базами данных
В CodeIgniter есть файл конфигурации, который позволяет хранить все настройки подключения (имя пользователя, пароль, наименование базы данных и т.д.) в одном месте. Этот файл находится в:
application/config/database.php
Конфигурационные настройки сохраняются в виде многомерного массива со следующей структурой:
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
Причиной хранения данных в многомерном массиве является возможность опционального использования нескольких наборов настроек подключения. Если, к примеру, вы работаете с одним дистрибутивом в различном окружении (тестовое, рабочее, готовый продукт), то у вас появляется возможность устанавливать различные группы соединений для каждого окружения, чтобы по необходимости переключаться. К примеру, чтобы создать группу настроек для тестового окружения, необходимо указать следующее:
$db['test']['hostname'] = "localhost";
$db['test']['username'] = "root";
$db['test']['password'] = "";
$db['test']['database'] = "database_name";
$db['test']['dbdriver'] = "mysql";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = TRUE;
$db['test']['db_debug'] = FALSE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
Теперь, чтобы система использовала эту группу, следует в конфигурационном файле указать:
$active_group = "test";
Замечание: наименование "test" является случайным. Оно может быть и любым другим, какое вам понравится. По умолчанию мы используем слово "default" для основного соединения, но и оно может быть изменено на что-то более подходящее вашему проекту.
Active Record
Класс Active Record включается или выключается на глобальном уровне посредством установки параметра $active_record в значение TRUE или FALSE (boolean) в файле конфигурации баз данных. Если в коде вы не используете шаблон Active Record, то установка значения параметра в FALSE сэкономит ресурсы при инициализации класса работы с базами данных.
$active_record = TRUE;
Замечание: некоторые классы фреймворка, такие как Sessions, требуют Active Records для обеспечения работы своего функционала.
Пояснение значений:
- hostname - Наименование хоста вашего сервера баз данных. Чаще всего это "localhost".
- username - Имя пользователя для подключения к базе данных.
- password - Пароль для подключения к базе данных.
- database - Имя базы данных, к которой необходимо подключиться.
- dbdriver - Тип базы данных. К примеру: mysql, postgre, obdc и т.д. Должен указываться в нижнем регистре.
- dbprefix - Опциональный префикс таблиц, который добавляется к их именам при работе с запросами Active Record. Это позволяет работать нескольким дистрибутивам CodeIgniter в пространстве имён одной базы данных.
- pconnect - TRUE/FALSE (boolean) - использовать ли постоянные соединения.
- db_debug - TRUE/FALSE (boolean) - Должны ли ошибки базы данных выводиться на экран.
- cache_on - TRUE/FALSE (boolean) - Включено ли кеширование запросов. Смотрите также Кеширование запросов.
- cachedir - Абсолютный путь на сервере к директории кеширования запросов.
- char_set - Наименование кодировки, в которой работает база данных.
- dbcollat - Сопоставление символов, которое используется базой данных.
- port - Номер порта базы данных. Сейчас используется только в драйвере Postgre. Чтобы использовать это значение, вам необходимо добавить строку в файл конфигурации базы данных.
$db['default']['port'] = 5432;
Замечание: В зависимости от вашей платформы баз данных (MySQL, Postgre и т.д.) не все значения могут быть задействованы в работе. К примеру, если используется SQLite, то нет необходимости указывать имя пользователя и пароль, а именем базы будет физический путь к ней. По большей части, информация приведённая выше подразумевает, что вы используетеg MySQL.