CodeIgniter, руководство пользователя к версии 1.6.1


Класс Database Forge

Класс Database Forge содержит функции, помогающие манипулировать базой данных и структурой таблиц.

Содержание

Инициализация класса Forge

Важно:  Перед запуском данного класса должен быть запущен драйвер для работы с БД!

Загрузка класса производится этим кодом :

$this->load->dbforge()

После инициализации объект можно использовать как $this->dbforge:

$this->dbforge->some_function()

$this->dbforge->create_database('db_name')

Создает базу данных с именем, заданным в параметре. Возвращает TRUE/FALSE в зависимости от результата:

if ($this->dbforge->create_database('my_db'))
{
    echo 'База создана!';
}

$this->dbforge->drop_database('db_name')

Удаляет базу данных с именем, заданным в параметре. Возвращает TRUE/FALSE в зависимости от результата:

if ($this->dbforge->drop_database('my_db'))
{
    echo 'База удалена!';
}

Создание и удаление таблиц

При создании таблиц можно добавлять новые поля и индексы. CodeIgniter поддерживает механизм для этих действий.

Добавление полей

Поля таблицы задаются как ассоциативный массив. Для каждого поля задается его ключ и значение. Например, ключ - 'type', возможные значения - INT, VARCHAR, TEXT, и т.д.

$fields = array(
                        'users' => array(
                                                 'type' => 'varchar',
                                                 'constraint' => '100',
                                          ),
                );

// будет создано поле "users VARCHAR(100)"

Так же могут использоваться следующие ключи/значения:

$fields = array(
                        'blog_id' => array(
                                                 'type' => 'INT',
                                                 'constraint' => 5,
                                                 'unsigned' => TRUE,
                                                 'auto_increment' => TRUE
                                          ),
                        'blog_title' => array(
                                                 'type' => 'VARCHAR',
                                                 'constraint' => '100',
                                          ),
                        'blog_author' => array(
                                                 'type' =>'VARCHAR',
                                                 'constraint' => '100',
                                                 'default' => 'King of Town',
                                          ),
                        'blog_description' => array(
                                                 'type' => 'TEXT',
                                                 'null' => TRUE,
                                          ),
                );
);

После определения полей следует их добавить в таблицу функцией $this->dbforge->add_field($fields) перед созданием таблицы ф-цией create_table().

$this->dbforge->add_field()

Добавление полей к таблице

Использование строк как полей

Если Вы знаете, как задавать описание поля строкой, то можно использовать ее в качестве параметра функции add_field()

$this->dbforge->add_field("label varchar(100) NOT NULL DEFAULT 'default label'");

Важно: Можно вызывать add_field() несколько раз. Тогда строки буду соединены воедино.

Создание поля типа id

Это специальное решение для создания полей типа id. Тип - INT(9), флаг auto_incremen, задано как Primary Key.

$this->dbforge->add_field('id');
// = id INT(9) NOT NULL AUTO_INCREMENT

Добавление ключей

Добавление ключей таблицы производится функцией $this->dbforge->add_key('field'). Второй необязательный параметр, заданный как TRUE создает первичный ключ. Заметьте, что вызов add_key() должен следовать перед созданием таблицы create_table().

$this->dbforge->add_key('blog_id', TRUE);
// = PRIMARY KEY (blog_id)

$this->dbforge->add_key('blog_name');
// = KEY (blog_name)

Создание таблицы

После того, как будут определены поля и ключи, нужно создать таблицу:

$this->dbforge->create_table('table_name');
// = CREATE TABLE table_name

Установленный необязательный второй параметр в TRUE добавляет условие "IF NOT EXISTS" при создании таблицы

$this->dbforge->create_table('table_name', TRUE);
// = CREATE TABLE IF NOT EXISTS table_name

Удаление таблицы

Равносильно sql-коду DROP TABLE :

$this->dbforge->drop_table('table_name');
// = DROP TABLE IF EXISTS table_name

Изменение таблиц

$this->dbforge->add_column()

Функция add_column() используется для добавления новых полей в таблицу.

$fields = array(
                        'preferences' => array('type' => 'TEXT')
);
$this->dbforge->add_column('table_name', $fields);

// = ALTER TABLE sites ADD preferences TEXT

$this->dbforge->drop_column()

Удаляет поле из таблицы.

$this->dbforge->drop_column('table_name', 'column_to_drop');

$this->dbforge->modify_column()

Эта функция идентична add_column(), только позволяет еще и редактировать существующие поля.

$fields = array(
                        'old_name' => array(
                                                         'name' => 'new_name',
                                                         'type' => 'TEXT',
                                                ),
);
$this->dbforge->modify_column('sites', $fields);

// = ALTER TABLE sites CHANGE old_name new_name TEXT