Приложение Codeigniter 3: перенаправление на определенный контроллер, если в базе данных нет таблиц - PullRequest
0 голосов
/ 08 октября 2018

Я работаю над основным приложением блога с Codeigniter 3.1.8 и Bootstrap 4 .

Я использую файлы миграции (001_create_authors.php до 005_create_comments.php) для автоматического создания необходимых таблиц базы данных.

Контроллер, выполняющий миграцию, находится на

application / controllers / Migrate.php

Он имеет текущий код:

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

  public function index()
  {
    $this->load->library('migration');

    if($this->migration->current() === FALSE)
    {
      show_error($this->migration->error_string());
    }
    else {
      echo 'Migration executed';
    }
  }
}

Контроллером по умолчанию является контроллер Posts, поскольку файл routes.php показывает: $route['default_controller'] = 'posts';

Я бы хотел, чтобы контроллер Posts перенаправил на Migrate, если в базе данных нет таблиц .Есть ли у Codeigniter метод для определения отсутствия таблиц?Как мне его использовать?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Я получил желаемый результат именно таким образом:

В контроллере сообщений (по умолчанию):

public function index() {
  // Create all the database tables if there are none
  // by redirecting to the Migrations controller
    if (count($this->db->list_tables()) == 0) {
       redirect('migrate');
     }
     // More code
}

В контроллере миграции:

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

  public function index()
  {
    $this->load->library('migration');

    if($this->migration->current() === FALSE)
    {
      show_error($this->migration->error_string());
    }
    else {
      $this->session->set_flashdata('tables_created', "All the required database tables have been created. You can now register.");
      redirect('/');
    }
  }
}
0 голосов
/ 08 октября 2018

https://www.codeigniter.com/user_guide/database/metadata.html

if (count($this->db->list_tables()) == 0) {
    redirect(...);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...