Класс Database Forge
Класс Database 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