在线文档教程
Codeigniter 3

数据库伪造类 | Database Forge Class

Database Forge Class

Database Forge类包含帮助您管理数据库的方法。

目录

  • 数据库伪造类

- [修改表格](about:blank#修改表格) - [向列添加列](about:blank#将列添加到表中) - [从表中删除列](about:blank#从表中删除列) - [修改表格中的列](about:blank#modify-a-column-in-a-table)

- [类参考](about:blank#class-reference)

初始化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为此提供了一种机制。

添加字段

字段通过关联数组创建。在数组中,您必须包含与该字段的数据类型相关的“类型”键。例如,INT,VARCHAR,TEXT等。许多数据类型(例如VARCHAR)也需要一个'约束'键。

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

另外,可以使用以下键/值:

  • unsigned / true:在字段定义中生成“UNSIGNED”。

$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_field()将字符串传递到字段定义中

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

注意

将原始字符串作为字段传递后,不能add_key()在这些字段上进行调用。

注意

多次调用add_field()是累积的。

创建一个ID字段

创建ID字段有一个特殊的例外。类型为id的字段将被自动分配为INT(9)auto_incrementing主键。

$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_setdbcollat值添加它们,只要它们不为空(仅限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

重命名表

执行TABLE重命名

$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()与之相同,只是它改变了现有的列而不是添加新的列。为了更改名称,您可以在定义数组的字段中添加一个“名称”键。

$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_forgeadd_column($table[, $field = array()[, $_after = NULL]])

参数:$ table(string) - 将列添加到$ field(array)的列名 - 列定义$ _after(string) - AFTER子句的列(不建议使用)
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ tablestring) - 要添加列的表名

返回:成功时为TRUE,失败时为FALSE

返回类型:布尔值

向表中添加一列。用法:请参阅[将列添加到表](about:blank#将列添加到表)。

add_field($field)

参数:$ field(array) - 要添加的字段定义
返回:CI_DB_forge实例(方法链接)
返回类型:CI_DB_forge

  • $ fieldarray) - 要添加的字段定义

返回:CI \ _DB \ _forge实例(方法链接)

返回类型:CI \ _DB \ _forge

向将用于创建表的集添加一个字段。用法:请参阅[添加字段](关于:空白#添加字段)。

add_key($key[, $primary = FALSE])

参数:$ key(array) - 键字段的名称$ primary(bool) - 如果它应该是主键或常规键,则设置为TRUE
返回:CI_DB_forge实例(方法链接)
返回类型:CI_DB_forge

  • $ key数组) - 一个关键字段的名称

返回:CI \ _DB \ _forge实例(方法链接)

返回类型:CI \ _DB \ _forge

向将用于创建表的集添加一个密钥。用法:请参阅[添加密钥](关于:空白#添加密钥)。

create_database($db_name)

参数:$ db_name(string) - 要创建的数据库的名称
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ db_namestring) - 要创建的数据库的名称

返回:成功时为TRUE,失败时为FALSE

返回类型:布尔值

创建一个新的数据库。用法:请参阅[创建和删除数据库](关于:空白#创建和删除数据库)。

create_table($table[, $if_not_exists = FALSE[, array $attributes = array()]])

参数:$ table(string) - 要创建的表的名称$ if_not_exists(string) - 设置为TRUE以添加'IF NOT EXISTS'子句$ attributes(string) - 表属性的关联数组
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ tablestring) - 要创建的表的名称

返回:成功时为TRUE,失败时为FALSE

返回类型:布尔值

创建一个新表。用法:请参阅[创建表格](关于:空白#创建表格)。

drop_column($table, $column_name)

参数:$ table(string) - 表名$ column_name(array) - 要删除的列名
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ tablestring) - 表名

返回:成功时为TRUE,失败时为FALSE

返回类型:布尔值

从表中删除一列。用法:请参见[从表中删除列](about:blank#从表中删除列)。

drop_database($db_name)

参数:$ db_name(字符串) - 要删除的数据库的名称
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ db_name字符串) - 要删除的数据库的名称

返回:成功时为TRUE,失败时为FALSE

返回类型:布尔值

丢弃数据库。用法:请参阅[创建和删除数据库](关于:空白#创建和删除数据库)。

drop_table($table_name[, $if_exists = FALSE])

参数:$ table(string) - 要删除的表的名称$ if_exists(string) - 设置为TRUE以添加'IF EXISTS'子句
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ tablestring) - 要删除的表的名称

返回:成功时为TRUE,失败时为FALSE

返回类型:布尔值

丢下一张桌子。用法:请参阅[删除表](关于:空白#删除表)。

modify_column($table, $field)

参数:$ table(string) - 表名$ field(array) - 列定义(s)
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ tablestring) - 表名

返回:成功时为TRUE,失败时为FALSE

返回类型:布尔值

修改表格列。用法:请参见[修改表格中的列](about:blank#modify-a-column-in-a-table)。

rename_table($table_name, $new_table_name)

参数:$ table(string) - 表中的当前值$ new_table_name(string) - 表的新名称
返回:成功为TRUE,失败为FALSE
返回类型:布尔

  • $ tablestring) - 表中的当前值

返回:成功时为TRUE,失败时为FALSE

返回类型:布尔值

重命名表格。用法:请参阅[重命名表](about:blank#renaming-a-table)。