Проблема с использованием dbforge с PyroCMS (CMS на основе CI) - PullRequest
1 голос
/ 19 октября 2011

Я уже давно использую 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 верен)?

EDIT

В качестве обходного пути я былвозможность использовать:

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 Ответ

1 голос
/ 19 октября 2011

Я думаю, что вы можете быть немного смущены префиксами сайта в PyroCMS 1.3.x.

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