我已经使用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,但是......
答案 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');
}