Spec-Zone.ru › CodeIgniter 3

Класс Database Forge

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

Содержание

  • Класс Database Forge
    • Инициализация класса Forge
    • Создание и удаление баз данных
    • Создание и удаление таблиц
      • Добавление полей
      • Добавление ключей
      • Создание таблицы
      • Удаление таблицы
      • Переименование таблицы
    • Изменение таблиц
      • Добавление столбца в таблицу
      • Удаление столбца из таблицы
      • Изменение столбца в таблице
    • Справочник по классу

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

Важно

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

Загрузите класс Forge следующим образом:

$this->load->dbforge()

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

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

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

Примечание

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

После инициализации вы получите доступ к методам, используя объект $this->dbforge:

$this->dbforge->some_method();

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

$this->dbforge->create_database(‘db_name’)

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

if ($this->dbforge->create_database('my_db'))
{
        echo 'Database created!';
}

$this->dbforge->drop_database(‘db_name’)

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

if ($this->dbforge->drop_database('my_db'))
{
        echo 'Database deleted!';
}

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

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

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

Поля создаются через ассоциативный массив. В массиве вы должны включить ключ ‘type’, который относится к типу данных поля. Например, INT, VARCHAR, TEXT и т. д. Многие типы данных (например, VARCHAR) также требуют ключа ‘constraint’.

$fields = array(
        'users' => array(
                'type' => 'VARCHAR',
                'constraint' => '100',
        ),
);
// will translate to "users VARCHAR(100)" when the field is added.

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

  • unsigned/true : для генерации «UNSIGNED» в определении поля.
  • default/value : для генерации значения по умолчанию в определении поля.
  • null/true : для генерации «NULL» в определении поля. Без этого поле по умолчанию будет «NOT NULL».
  • auto_increment/true : генерирует флаг auto_increment для поля. Обратите внимание, что тип поля должен быть типом, который поддерживает это, например, целое число.
  • 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_fields будет принимать указанный выше массив.

Передача строк в качестве полей

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

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

Примечание

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

Примечание

Несколько вызовов add_field() являются кумулятивными.

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

Существует специальное исключение для создания полей id. Поле с типом id автоматически будет назначено как INT(9) автоинкрементирующий первичный ключ.

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

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

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

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

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

$this->dbforge->add_key('blog_id', TRUE);
$this->dbforge->add_key('site_id', TRUE);
// gives PRIMARY KEY `blog_id_site_id` (`blog_id`, `site_id`)

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

$this->dbforge->add_key(array('blog_name', 'blog_label'));
// gives KEY `blog_name_blog_label` (`blog_name`, `blog_label`)

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

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

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

Дополнительный второй параметр, установленный в TRUE, добавляет в определение предложение «IF NOT EXISTS»

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

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

$attributes = array('ENGINE' => 'InnoDB');
$this->dbforge->create_table('table_name', FALSE, $attributes);
// produces: 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.

// Produces: DROP TABLE table_name
$this->dbforge->drop_table('table_name');

// Produces: DROP TABLE IF EXISTS table_name
$this->dbforge->drop_table('table_name',TRUE);

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

Выполняет переименование таблицы

$this->dbforge->rename_table('old_table_name', 'new_table_name');
// gives 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);
// Executes: 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);
// gives ALTER TABLE table_name CHANGE old_name new_name TEXT

Справочник по классу

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

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

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

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

Экземпляр CI_DB_forge (цепление методов)

Тип возвращаемого значения:

CI_DB_forge

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

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

Экземпляр CI_DB_forge (цепление методов)

Тип возвращаемого значения:

CI_DB_forge

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

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

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

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

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

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

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

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

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

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

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

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

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

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

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

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

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

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

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

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

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

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

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/database/forge.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API