数据库伪造类 | 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_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
重命名表
执行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 |
返回类型: | 布尔 |
$ table
(string
) - 要添加列的表名
返回:成功时为TRUE,失败时为FALSE
返回类型:布尔值
向表中添加一列。用法:请参阅[将列添加到表](about:blank#将列添加到表)。
add_field($field)
参数: | $ field(array) - 要添加的字段定义 |
---|---|
返回: | CI_DB_forge实例(方法链接) |
返回类型: | CI_DB_forge |
$ field
(array
) - 要添加的字段定义
返回: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_name
(string
) - 要创建的数据库的名称
返回:成功时为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 |
返回类型: | 布尔 |
$ table
(string
) - 要创建的表的名称
返回:成功时为TRUE,失败时为FALSE
返回类型:布尔值
创建一个新表。用法:请参阅[创建表格](关于:空白#创建表格)。
drop_column($table, $column_name)
参数: | $ table(string) - 表名$ column_name(array) - 要删除的列名 |
---|---|
返回: | 成功为TRUE,失败为FALSE |
返回类型: | 布尔 |
$ table
(string
) - 表名
返回:成功时为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 |
返回类型: | 布尔 |
$ table
(string
) - 要删除的表的名称
返回:成功时为TRUE,失败时为FALSE
返回类型:布尔值
丢下一张桌子。用法:请参阅[删除表](关于:空白#删除表)。
modify_column($table, $field)
参数: | $ table(string) - 表名$ field(array) - 列定义(s) |
---|---|
返回: | 成功为TRUE,失败为FALSE |
返回类型: | 布尔 |
$ table
(string
) - 表名
返回:成功时为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 |
返回类型: | 布尔 |
$ table
(string
) - 表中的当前值
返回:成功时为TRUE,失败时为FALSE
返回类型:布尔值
重命名表格。用法:请参阅[重命名表](about:blank#renaming-a-table)。