Проблема с использованием 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');
}
Другие вопросы по тегам