目录搜索
文字

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

目录

  • 数据库伪造类

    • 添加字段

    • 添加键

    • 创建一个表格

    • 丢下一张桌子

    • 重命名表

    • 初始化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”。

  • 默认值/值:在字段定义中生成默认值。

  • null / true:在字段定义中生成“NULL”。没有这个,该字段将默认为“NOT NULL”。

  • auto_increment / true:在该字段上生成一个auto_increment标志。请注意,字段类型必须是支持此类型的类型,例如整数。

  • 唯一/真实:为字段定义生成唯一键。

$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) - 要添加列的表名

  • $ fieldarray) - 列定义(s)

  • $ _after字符串) -  AFTER子句的列(不建议使用)

返回:成功时为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数组) - 一个关键字段的名称

  • $ primarybool) - 如果它应该是主键或常规键,则设置为TRUE

返回: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) - 要创建的表的名称

  • $ if_not_existsstring) - 设置为TRUE以添加'IF NOT EXISTS'子句

  • $ attributesstring) - 表格属性的关联数组

返回:成功时为TRUE,失败时为FALSE
返回类型:布尔值
创建一个新表。用法:请参阅[创建表格](关于:空白#创建表格)。

drop_column($table, $column_name)

参数:

$ table(string) - 表名$ column_name(array) - 要删除的列名

返回:

成功为TRUE,失败为FALSE

返回类型:

布尔

  • $ tablestring) - 表名

  • $ column_namearray) - 要删除的列名称

返回:成功时为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) - 要删除的表的名称

  • $ if_existsstring) - 设置为TRUE以添加'IF EXISTS'子句

返回:成功时为TRUE,失败时为FALSE
返回类型:布尔值
丢下一张桌子。用法:请参阅[删除表](关于:空白#删除表)。

modify_column($table, $field)

参数:

$ table(string) - 表名$ field(array) - 列定义(s)

返回:

成功为TRUE,失败为FALSE

返回类型:

布尔

  • $ tablestring) - 表名

  • $ fieldarray) - 列定义(s)

返回:成功时为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) - 表中的当前值

  • $ new_table_name字符串) - 表的新名称

返回:成功时为TRUE,失败时为FALSE
返回类型:布尔值
重命名表格。用法:请参阅[重命名表](about:blank#renaming-a-table)。
上一篇:下一篇: