2017-01-17 1 views
0

Я использую CodeIgniter 3.1.0 для разработки приложения. Чтобы улучшить установку, я написал Install_Controller и Install_Model.Codeigniter 3 - Как использовать класс Forge для создания схемы базы данных?

Я хочу использовать класс базы данных Forge для управления схемой базы данных, но это не очень понятно в руководстве пользователя, и ничего не помогает в Google.

мне нужно использовать $ this-> dbforge-> create_database, потому что пользователь ничего не знает о базе данных, так что все, что он будет делать это MySQL «Далее, следующий, установить», а затем запустить пакетный файл, запустить PHP как веб-сервер, поэтому из Chrome он может использовать URL для установки приложения.

Руководство пользователя говорит: Чтобы инициализировать класс Forge, ваш драйвер базы данных должен быть запущен, так как класс forge полагается на него.

Так что я настроил конфигурации/database.php с пользователем, PWD, DBNAME и так далее ... Даже потому, что мне это нужно использовать в приложении.

При попытке загрузить URL, чтобы установить приложение, дайте мне ошибку: сообщение: Mysqli :: real_connect(): (HY000/1049): Неизвестный базы данных 'тест'

Итак, как могу ли я использовать класс Forge для создания схемы базы данных, если мне нужно ее сначала?

Некоторый код ...

$db['default'] = array(
    'dsn' => '', 
    'hostname' => 'localhost', 
    'username' => 'root', 
    'password' => 'root', 
    'database' => 'test', 
    'dbdriver' => 'mysqli' 
); 

$autoload['libraries'] = array('database'); 

class Install extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $this->load->model('install_model'); 
     $this->install_model->createDabase(); 
    } 
} 

class Install_model extends CI_Model { 
    function __construct() { 
     parent::__construct(); 
    } 

    function createDabase() { 
     $this->load->dbforge(); 

     if ($this->dbforge->create_database('test')) 
      echo 'Database created!'; 
     else 
      echo 'Database error!'; 
    } 
} 
+0

Я сделал очень грязное обходное решение, надеюсь, что кто-то даст мне хороший ответ ... ** 1. ** Удалить базу данных с автозагрузчика. ** 2. ** Используйте несколько баз данных, по умолчанию один и тот же, но я создал вторую, у которой есть пустое имя базы данных. ** 3. ** Используйте вторую базу данных с классом Forge, а не по умолчанию. ** 4. ** Загрузите вручную базу данных по умолчанию в других контроллерах. – Sirius

ответ

0

После попытки и получить много мнений, единственный способ, как я заметил:

  1. Удалить базу данных из автозагрузчика;
  2. Используйте несколько баз данных, по умолчанию один и тот же, но создайте второй, у которого есть пустое имя базы данных;
  3. Используйте вторую базу данных с классом Forge, а не по умолчанию, только для создания базы данных и таблиц;
  4. Измените вручную базу данных по умолчанию и используйте ее после этого.
Смежные вопросы