1

我使用 PyroCMS 和 CI 已经有一段时间了,我真的很喜欢它。

我正在扩展一个数据库模块,该模块将允许管理员用户管理数据库,而无需使用 phpMyAdmin 之类的东西。

然而,我唯一能够开始工作的是浏览表的字段值(即'SELECT * FROM'table_name')。

我想包含更多功能,但我似乎无法让 dbforge 正常工作。我知道它已加载,因为 dbforge 用于卸载模块。从它调用函数时我也没有收到错误。

这是我的控制器代码示例(已加载 dbforge)。

public function drop($table_name)
{
    $table_name = $this->uri->segment(4);
    $this->dbforge->drop_table($table_name);
    redirect('admin/database/tables');
}

假设从这个 url 调用函数:

.../admin/database/drop/table_name

它似乎工作......但它只是重定向到表格概述。

有什么我想念的吗?[$this->dbforge->drop_table($table_name);] 不应该总是删除一个表(假设 $table_name 是有效的)?

编辑

作为一种解决方法,我能够使用:

public function drop($table_name)
{
    $table_name = $this->uri->segment(4);
    //$this->dbforge->drop_table($table_name);
    $this->db->query("DROP TABLE ".$table_name);
    redirect('admin/database/tables');
    return TRUE;
}

我真的很想使用 DB forge,但是...

4

1 回答 1

2

我想你可能会对 PyroCMS 1.3.x 中的站点前缀感到有些困惑。

默认情况下,Community 和 Professional 的所有安装都将 default_ 作为第一个站点中所有表的前缀。如果您有 Professional,则可以添加新站点,站点参考将是 any_ 而不是 default_

此前缀由 dbforge 负责,因此当您要删除 default_blog 时,您只需删除:

/admin/database/drop/blog

另外,你为什么接受 $table_name 作为参数然后用 uri 段覆盖它?

另外,你为什么接受 $table_name 作为参数然后用 uri 段覆盖它?

看看我在那里做了什么?xD

public function drop($table_name)
{
    $this->dbforge->drop_table($table_name);
    redirect('admin/database/tables');
}
于 2011-10-18T23:41:29.980 回答