Проблема с использованием dbforge с PyroCMS (CI на основе CI)
Я уже давно использую 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 ответ
Я думаю, вы можете быть немного смущены префиксами сайта в PyroCMS 1.3.x.
По умолчанию все установки Community и Professional будут иметь default_ в качестве префикса для всех таблиц на первом сайте. Если у вас есть Professional, вы можете добавлять новые сайты, и ссылка на сайт будет любой_ вместо 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');
}