Codeigniter 3 应用程序:如果数据库中没有表,则重定向到某个控制器



我正在使用Codeigniter 3.1.8Bootstrap 4开发一个基本的博客应用程序。

我使用迁移文件(001_create_authors.php最多005_create_comments.php个(来自动创建必要的数据库表。

运行迁移的控制器位于

应用程序/控制器/迁移.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 是否有确定是否没有表的方法?我该如何使用它?

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

if (count($this->db->list_tables()) == 0) {
redirect(...);
}

我以这种方式得到了想要的结果:

在帖子控制器(默认(中:

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('/');
}
}
}

相关内容

  • 没有找到相关文章

最新更新