Класс Database Forge  

Данный класс содержит методы, которые помогут вам управлять вашими базами данных.

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

Важно

Для того, чтобы инициализировать данный класс, драйвер базы данных уже должн быть запущен, так как класс Forge использует его.

Загрузка класса Forge:

$this->load->dbforge()

Вы также можете передать другой объект базы данных в загрузку Forge для случаев, когда вы хотите управлять базой не установленной по умолчанию:

$this->myforge = $this->load->dbforge($this->other_db, TRUE);

В приведенном выше примере, мы передаем объект пользовательской базы данных в качестве первого параметра и затем возвращаем объект dbforge вместо назначения его напрямую $this->dbforge.

Примичание

Оба параметра могут использоваться по отдельности, достаточно передать пустое значение первым пораметром если вы хотите пропустить его.

После инициализации вы будете обращаться к методам класса $this->dbforge object:

$this->dbforge->some_method();

Создание и удаление аз данных  

$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 и т.д. Многие типы данных (например, тип VARCHAR) также требуют ‘constraint’ ключ.

$fields = array(
        'users' => array(
                'type' => 'VARCHAR',
                'constraint' => '100',
        ),
);
// будет создано "users VARCHAR(100)" при добавлении поля.

Кроме того, следующие ключи/значения могут быть использованы:

  • unsigned/true : для создания “UNSIGNED” в пределах поля.
  • default/value : для создания значения по умолчанию в пределах поля.
  • null/true : для создания “NULL” в пределах поля. Без этого поля по умолчанию “NOT NULL”.
  • auto_increment/true : создает auto_increment флаг для поля. Обратите внимание, что тип поля должен поддерживать такой тип как integer.
  • unique/true : создание уникального ключа в пределах поля.
$fields = array(
        'blog_id' => array(
                'type' => 'INT',
                'constraint' => 5,
                'unsigned' => TRUE,
                'auto_increment' => TRUE
        ),
        'blog_title' => array(
                'type' => 'VARCHAR',
                'constraint' => '100',
                'unique' => TRUE,
        ),
        '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" принимает вышеуказанный массив.

Passing strings as fields  

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

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

Примечание

Передача строк как полей не могут следовать вызовам add_key() этих полей.

Примечание

Множественные вызовы add_field() являются накопительными.

Создание поля ID  

Есть специальное исключение для создания поля ID. Такое поле будет автоматически назначаться в качестве INT(9) auto_incrementing Primary Key.

$this->dbforge->add_field('id');
// дает INT(9) NOT NULL AUTO_INCREMENT

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

Вообще говоря, вы пожелаете, чтобы ваши таблицы имели ключи. Это достигается с $this->dbforge->add_key(‘field’). Необязательный второй параметр установленный в TRUE создаст primary ключ. Обратите внимание, что add_key() должен быть вызван после вызова create_table().

Несколько столбцов с ключом non-primary, должны быть отправлены как массив. Ниже пример вывода для MySQL.

$this->dbforge->add_key('blog_id', TRUE);
// дает PRIMARY KEY `blog_id` (`blog_id`)

$this->dbforge->add_key('blog_id', TRUE);
$this->dbforge->add_key('site_id', TRUE);
// дает PRIMARY KEY `blog_id_site_id` (`blog_id`, `site_id`)

$this->dbforge->add_key('blog_name');
// дает KEY `blog_name` (`blog_name`)

$this->dbforge->add_key(array('blog_name', 'blog_label'));
// дает KEY `blog_name_blog_label` (`blog_name`, `blog_label`)

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

После объявления полей и ключей вы можете создавать новые таблицы с

$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

Вы также можете передать дополнительные атрибуты таблицы, такие как ENGINE для MySQL:

$attributes = array('ENGINE' => 'InnoDB');
$this->dbforge->create_table('table_name', FALSE, $attributes);
// производит: CREATE TABLE `table_name` (...) ENGINE = InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

Примечание

Если Вы не укажите CHARACTER SET и/или COLLATE свойства, create_table() будет добавлять их в свои настроенный char_set и dbcollat занчения пока они не пустые (MySQL только).

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

Выполнение DROP TABLE заявления и дополнительно добавить IF EXISTS заявление.

// производит: DROP TABLE table_name
$this->dbforge->drop_table('table_name');

// производит: DROP TABLE IF EXISTS table_name
$this->dbforge->drop_table('table_name',TRUE);

Переименование таблицы  

Выполнение переименования ТАБЛИЦЫ

$this->dbforge->rename_table('old_table_name', 'new_table_name');
// дает ALTER TABLE old_table_name RENAME TO new_table_name

Обновление таблиц  

Добавление столбца в таблицу  

$this->dbforge->add_column()

Метод add_column() используется для изменения существующей таблицы. Он принимает те же поля массива, как указано выше, и может быть использовать неограниченное количество дополнительных полей.

$fields = array(
        'preferences' => array('type' => 'TEXT')
);
$this->dbforge->add_column('table_name', $fields);
// Выполняет: ALTER TABLE table_name ADD preferences TEXT

Если вы используете MySQL или CUBIRD, тогда вы можете воспользоваться их AFTER и FIRST заявлениями для расположения колонки.

Примеры:

// Will place the new column after the `another_field` column:
$fields = array(
        'preferences' => array('type' => 'TEXT', 'after' => 'another_field')
);

// Will place the new column at the start of the table definition:
$fields = array(
        'preferences' => array('type' => 'TEXT', 'first' => TRUE)
);

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

$this->dbforge->drop_column()

Используется для удаления столбца из таблицы.

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

Обновление столбца таблицы  

$this->dbforge->modify_column()

Использование этого метода идентично add_column(), кроме того, что он изменяет существующий столбец, а не добавлять новый. Для того, чтобы изменить имя можно добавить ключ “name” в поле определение массива.

$fields = array(
        'old_name' => array(
                'name' => 'new_name',
                'type' => 'TEXT',
        ),
);
$this->dbforge->modify_column('table_name', $fields);
// дает ALTER TABLE table_name CHANGE old_name new_name TEXT

Справка класса  

class CI_DB_forge  
add_column($table[, $field = array()[, $_after = NULL]])  
Параметры:
  • $table (строка) – Имя таблицы, куда добавить столбец
  • $field (массив) – Определение столбца(ов)
  • $_after (строка) – Колонка для AFTER заявления (устаревшее)
Возвращает:

TRUE при успехе, FALSE вслучае провала

Вовращаемый тип:

булев

Добавляет колонку в таблицу. Использование: см. Добавление колонки в таблицу.

add_field($field)  
Параметры:
  • $field (массив) – Определение полей для добавления
Возвращает:

CI_DB_forge экземпляр (цепочка методов)

Вовращаемый тип:

CI_DB_forge

Добавляет поле для набора, которое будет использоваться для создания таблицы. Использование: см. Добавление полей.

add_key($key[, $primary = FALSE])  
Параметры:
  • $key (массив) – Имя ключевого поля
  • $primary (булев) – Установите TRUE, если это должен быть первичный ключ или обычный
Возвращает:

CI_DB_forge экземпляр (цепочка методов)

Вовращаемый тип:

CI_DB_forge

Добавляет ключ к набору, который будет использоваться для создания таблицы. Использование: см. Добавление ключей.

create_database($db_name)  
Параметры:
  • $db_name (строка) – Имя базы данных для создания
Возвращает:

TRUE при успехе, FALSE вслучае провала

Вовращаемый тип:

булев

Создает новую базу данных. Использование: см Создание и удаление базы данных.

create_table($table[, $if_not_exists = FALSE[, array $attributes = array()]])  
Параметры:
  • $table (строка) – Имя создаваемой таблицы
  • $if_not_exists (строка) – Установите TRUE для добавления ‘IF NOT EXISTS’ заявления
  • $attributes (строка) – Ассоциативный массив атрибутов таблицы
Возвращает:

TRUE при успехе, FALSE вслучае провала

Вовращаемый тип:

булев

Создает новую таблицу. Использование: см. Создание таблицы.

drop_column($table, $column_name)  
Параметры:
  • $table (строка) – Имя таблицы
  • $column_name (массив) – Имя столбца для удаления
Возвращает:

TRUE при успехе, FALSE вслучае провала

Вовращаемый тип:

булев

Удаляет столбец из таблицы. Использование: см. Удаление столбца из таблицы.

drop_database($db_name)  
Параметры:
  • $db_name (строка) – Имя базы данных для удаления
Возвращает:

TRUE при успехе, FALSE вслучае провала

Вовращаемый тип:

булев

Удаление базы данных. Использование: See Создание и удаление базы данных.

drop_table($table_name[, $if_exists = FALSE])  
Параметры:
  • $table (строка) – Имя таблицы для удаления
  • $if_exists (строка) – Установите TRUE для добавления ‘IF EXISTS’ заявления
Возвращает:

TRUE при успехе, FALSE вслучае провала

Вовращаемый тип:

булев

Удаляет таблицу. Использование: см. Удаление таблицы.

modify_column($table, $field)  
Параметры:
  • $table (строка) – Имя таблицы
  • $field (массив) – Определение столбца(ов)
Возвращает:

TRUE при успехе, FALSE вслучае провала

Вовращаемый тип:

булев

Изменяет столбец таблицы. Использование: см. Изменение столбца таблицы.

rename_table($table_name, $new_table_name)  
Параметры:
  • $table (строка) – Текущие таблицы
  • $new_table_name (строка) – Новое имя таблицы
Возвращает:

TRUE при успехе, FALSE вслучае провала

Вовращаемый тип:

булев

Переименовывает таблицу. Использование: см Переименование таблицы.