Класс Database Forge

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

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

Важный

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

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

$forge = \Config\Database::forge();

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

$this->myforge = \Config\Database::forge('other_db');

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

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

$ forge-> createDatabase (‘имя_бд’)

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

if ($forge->createDatabase('my_db'))
{
        echo 'Database created!';
}

Необязательный второй параметр, установленный на TRUE, добавит оператор IF EXISTS или проверит, существует ли база данных перед ее созданием (в зависимости от СУБД).

$forge->createDatabase('my_db', TRUE);
// gives CREATE DATABASE IF NOT EXISTS my_db
// or will check if a database exists

$ forge-> dropDatabase (‘имя_бд’)

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

if ($forge->dropDatabase('my_db'))
{
        echo 'Database deleted!';
}

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

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

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

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

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

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

  • unsigned / true: для генерации «UNSIGNED» в определении поля.
  • default / value: для создания значения по умолчанию в определении поля.
  • null / true: генерировать «NULL» в определении поля. Без этого поле по умолчанию будет «НЕ ПУСТО».
  • auto_increment / true: генерирует флаг auto_increment для поля. Обратите внимание, что тип поля должен быть типом, поддерживающим это, например целым числом.
  • unique / true: создать уникальный ключ для определения поля.
$fields = [
        'id'          => [
                'type'           => 'INT',
                'constraint'     => 5,
                'unsigned'       => true,
                'auto_increment' => true
        ],
        'title'       => [
                'type'           => 'VARCHAR',
                'constraint'     => '100',
                'unique'         => true,
        ],
        'author'      => [
                'type'           =>'VARCHAR',
                'constraint'     => 100,
                'default'        => 'King of Town',
        ],
        'description' => [
                'type'           => 'TEXT',
                'null'           => true,
        ],
        'status'      => [
                'type'           => 'ENUM',
                'constraint'     => ['publish', 'pending', 'draft'],
                'default'        => 'pending',
        ],
];

После того, как поля были определены, их можно добавить, используя с $forge->addField($fields);последующим вызовом createTable()метода.

$ forge-> addField ()

Метод добавления полей примет указанный выше массив.

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

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

$forge->addField("label varchar(100) NOT NULL DEFAULT 'default label'");

Заметка

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

Заметка

Несколько вызовов addField () накапливаются.

Создание поля идентификатора

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

$forge->addField('id');
// gives id INT(9) NOT NULL AUTO_INCREMENT

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

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

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

$forge->addKey('blog_id', TRUE);
// gives PRIMARY KEY `blog_id` (`blog_id`)

$forge->addKey('blog_id', TRUE);
$forge->addKey('site_id', TRUE);
// gives PRIMARY KEY `blog_id_site_id` (`blog_id`, `site_id`)

$forge->addKey('blog_name');
// gives KEY `blog_name` (`blog_name`)

$forge->addKey(['blog_name', 'blog_label']);
// gives KEY `blog_name_blog_label` (`blog_name`, `blog_label`)

$forge->addKey(['blog_id', 'uri'], FALSE, TRUE);
// gives UNIQUE KEY `blog_id_uri` (`blog_id`, `uri`)

Чтобы сделать чтение кода более объективным, также можно добавить первичные и уникальные ключи с помощью определенных методов:

$forge->addPrimaryKey('blog_id');
// gives PRIMARY KEY `blog_id` (`blog_id`)

$forge->addUniqueKey(['blog_id', 'uri']);
// gives UNIQUE KEY `blog_id_uri` (`blog_id`, `uri`)

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

Внешние ключи помогают поддерживать отношения и действия в ваших таблицах. Для таблиц, поддерживающих внешние ключи, вы можете добавить их прямо в forge:

$forge->addForeignKey('users_id','users','id');
// gives CONSTRAINT `TABLENAME_users_foreign` FOREIGN KEY(`users_id`) REFERENCES `users`(`id`)

Вы можете указать желаемое действие для свойств ограничения «при удалении» и «при обновлении»:

$forge->addForeignKey('users_id','users','id','CASCADE','CASCADE');
// gives CONSTRAINT `TABLENAME_users_foreign` FOREIGN KEY(`users_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE

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

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

$forge->createTable('table_name');
// gives CREATE TABLE table_name

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

$forge->createTable('table_name', TRUE);
// gives CREATE TABLE IF NOT EXISTS table_name

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

$attributes = ['ENGINE' => 'InnoDB'];
$forge->createTable('table_name', FALSE, $attributes);
// produces: CREATE TABLE `table_name` (...) ENGINE = InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

Заметка

Если вы не укажете атрибуты и / или , они всегда будут добавляться с вашей настроенной кодировкой и значениями DBCollat , если они не пусты (только MySQL).CHARACTER SETCOLLATEcreateTable()

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

Выполните оператор DROP TABLE и при необходимости добавьте предложение IF EXISTS.

// Produces: DROP TABLE table_name
$forge->dropTable('table_name');

// Produces: DROP TABLE IF EXISTS table_name
$forge->dropTable('table_name',TRUE);

Удаление внешнего ключа

Выполните DROP FOREIGN KEY.

// Produces: ALTER TABLE 'tablename' DROP FOREIGN KEY 'users_foreign'
$forge->dropForeignKey('tablename','users_foreign');

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

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

$forge->renameTable('old_table_name', 'new_table_name');
// gives ALTER TABLE old_table_name RENAME TO new_table_name

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

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

$ forge-> addColumn ()

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

$fields = [
        'preferences' => ['type' => 'TEXT']
];
$forge->addColumn('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 = [
        'preferences' => ['type' => 'TEXT', 'after' => 'another_field']
];

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

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

$ forge-> dropColumn ()

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

$forge->dropColumn('table_name', 'column_to_drop'); // to drop one single column

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

$forge->dropColumn('table_name', 'column_1,column_2'); // by proving comma separated column names
$forge->dropColumn('table_name', ['column_1', 'column_2']); // by proving array of column names

Изменение столбца в таблице

$ forge-> modifyColumn ()

Использование этого метода идентично addColumn(), за исключением того, что он изменяет существующий столбец, а не добавляет новый. Чтобы изменить имя, вы можете добавить ключ «имя» в поле, определяющее массив.

$fields = [
        'old_name' => [
                'name' => 'new_name',
                'type' => 'TEXT',
        ],
];
$forge->modifyColumn('table_name', $fields);
// gives ALTER TABLE table_name CHANGE old_name new_name TEXT

Ссылка на класс

CodeIgniter\Database\ForgeaddColumn$ table[$ field = []])

Параметры:$ table ( строка ) — Имя таблицы для добавления столбца в$ field ( массив ) — Определение (я) столбца
Возврат:ИСТИНА при успехе, ЛОЖЬ при неудаче
Тип возврата:bool

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

Параметры:$ field ( массив ) — Определение поля для добавления
Возврат:Экземпляр CodeIgniterDatabaseForge (цепочка методов)
Тип возврата:CodeIgniterDatabaseForge

Добавляет в набор поле, которое будет использоваться для создания таблицы. Использование: см. Добавление полей .addKey$ ключ[$ primary = FALSE[$ unique = FALSE]])

Параметры:$ key ( смешанный ) — Имя ключевого поля или массива полей$ primary ( bool ) — Установите значение TRUE, если это должен быть первичный ключ или обычный.$ unique ( bool ) — Установите в TRUE, если это должен быть уникальный ключ или обычный
Возврат:Экземпляр CodeIgniterDatabaseForge (цепочка методов)
Тип возврата:CodeIgniterDatabaseForge

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

Параметры:$ key ( смешанный ) — Имя ключевого поля или массива полей
Возврат:Экземпляр CodeIgniterDatabaseForge (цепочка методов)
Тип возврата:CodeIgniterDatabaseForge

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

Параметры:$ key ( смешанный ) — Имя ключевого поля или массива полей
Возврат:Экземпляр CodeIgniterDatabaseForge (цепочка методов)
Тип возврата:CodeIgniterDatabaseForge

Добавляет уникальный ключ в набор, который будет использоваться для создания таблицы. Использование: см. Добавление ключей .createDatabase$ dbName[$ ifNotExists = ЛОЖЬ])

Параметры:$ db_name ( строка ) — Имя создаваемой базы данных$ ifNotExists ( строка ) — установите значение TRUE, чтобы добавить предложение IF NOT EXISTS или проверить, существует ли база данных
Возврат:ИСТИНА при успехе, ЛОЖЬ при неудаче
Тип возврата:bool

Создает новую базу данных. Использование: см. Создание и удаление баз данных .createTable$ table[$ if_not_exists = ЛОЖЬ[массив $ attributes = []]])

Параметры:$ table ( строка ) — Имя создаваемой таблицы$ if_not_exists ( строка ) — Установите в TRUE, чтобы добавить предложение IF NOT EXISTS$ attributes ( строка ) — ассоциативный массив атрибутов таблицы
Возврат:Объект запроса в случае успеха, FALSE в случае неудачи
Тип возврата:смешанный

Создает новую таблицу. Использование: см. Создание таблицы .dropColumn$ таблица , $ имя_столбца )

Параметры:$ table ( строка ) — Имя таблицы$ column_names ( смешанный ) — строка с разделителями-запятыми или массив имен столбцов
Возврат:ИСТИНА при успехе, ЛОЖЬ при неудаче
Тип возврата:bool

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

Параметры:$ dbName ( строка ) — Имя удаляемой базы данных
Возврат:ИСТИНА при успехе, ЛОЖЬ при неудаче
Тип возврата:bool

Удаляет базу данных. Использование: см. Создание и удаление баз данных .dropTable$ table_name[$ if_exists = ЛОЖЬ])

Параметры:$ table ( строка ) — Имя таблицы для удаления$ if_exists ( строка ) — Установите в TRUE, чтобы добавить предложение IF EXISTS
Возврат:ИСТИНА при успехе, ЛОЖЬ при неудаче
Тип возврата:bool

Опускает стол. Использование: см. Удаление таблицы .modifyColumn$ таблица , $ поле )

Параметры:$ table ( строка ) — Имя таблицы$ field ( массив ) — Определение (я) столбца
Возврат:ИСТИНА при успехе, ЛОЖЬ при неудаче
Тип возврата:bool

Изменяет столбец таблицы. Использование: см. Раздел « Изменение столбца в таблице» .renameTable$ имя_таблицы , $ новое_имя_таблицы )

Параметры:$ table ( строка ) — Текущая таблица$ new_table_name ( строка ) — Новое имя таблицы
Возврат:Объект запроса в случае успеха, FALSE в случае неудачи
Тип возврата:смешанный

Добавить комментарий