使用dbforge与PyroCMS(基于CI的CMS)的麻烦

时间:2011-10-18 20:10:24

标签: database codeigniter controller pyrocms dbforge

我已经使用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,但是......

1 个答案:

答案 0 :(得分:1)

我认为您可能会对PyroCMS 1.3.x中的站点前缀感到困惑。

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

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

/管理/数据库/删除/博客

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

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

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

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