如果数据库为空,如何运行Codeigniter迁移

我正在将Codeigniter 3.1.4开发环境转移到Docker容器中。 当第一次运行Docker镜像时,如果数据库为空,我希望Codeigniter自动在数据库中创build表,而不是导出当前的开发数据库,​​然后将其导入到Mysql泊坞窗中。

我已经在开发过程中(通过命令行)使用迁移库来更改数据库模式。 这听起来像迁移图书馆将完美的这个任务,但我想不出我应该从哪里来。 例如 – 我添加一些代码到database.php的末尾来检查数据库是否存在,然后以某种方式调用我的迁移控制器?

我find了一个方法来完成这个。 在MY_Controller类(扩展了CI_Controller的类)中,我检查数据库以查看表ci_sessions是否存在。 如果没有,我假设数据库是空的,我应该运行迁移。 这里是一个例子:

class MY_Controller extends CI_Controller { function __construct() { parent::__construct(); // If ci_sessions doesn't exist, run db migration (via command-line) if (!$this->db->table_exists('ci_sessions')) { $output = shell_exec("php index.php migrate"); if (strncmp($output, "Migration worked!", 17) != 0) { exit($output); } } $this->load->library ( 'session' ); $this->load->model ( 'user_model' ); } } 

请注意,我正在通过shell命令运行迁移。 这是为了防止URL访问迁移控制器。 这可能是一个更好的方法,但我还没有弄明白。