Sha*_*oon 42 migration codeigniter codeigniter-2
我知道如何通过http://codeigniter.com/user_guide/libraries/migration.html创建它们
但是,一旦我创建了我的迁移文件,我该如何运行它们?
twm*_*loy 59
使用这些页面作为参考:通过CLI 和Migration Class 运行, 您可以将对迁移控制器的访问权限限制为命令行(application/controllers/migrate.php):
<?php if ( ! defined('BASEPATH')) exit("No direct script access allowed");
class Migrate extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->input->is_cli_request()
or exit("Execute via command line: php index.php migrate");
$this->load->library('migration');
}
public function index()
{
if(!$this->migration->latest())
{
show_error($this->migration->error_string());
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后执行最新的迁移,进入项目目录的根目录并运行:
php index.php migrate
Run Code Online (Sandbox Code Playgroud)
但是当您尝试通过webserver domain.com/migrate访问时,您将在上面的脚本中看到该文本.
RSK*_*RSK 27
我不确定这是正确的做法,但它对我有用.
我创建了一个名为migrate (controllers/migrate.php)的控制器.
<?php defined("BASEPATH") or exit("No direct script access allowed");
class Migrate extends CI_Controller{
public function index($version){
$this->load->library("migration");
if(!$this->migration->version($version)){
show_error($this->migration->error_string());
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后从浏览器我将调用此url index在migrate控制器中执行操作
例如:http://localhost/index.php/migrate/index/1
您还可以为向下或向上迁移运行某个版本:
if(!defined('BASEPATH')) exit('No direct script access allowed');
class Migrate extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->library('migration');
}
public function version($version)
{
if($this->input->is_cli_request())
{
$migration = $this->migration->version($version);
if(!$migration)
{
echo $this->migration->error_string();
}
else
{
echo 'Migration(s) done'.PHP_EOL;
}
}
else
{
show_error('You don\'t have permission for this action');;
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于CLI,运行此命令php index.php migrate version 5,其中5是迁移版本.如果版本更多是当前迁移 - 向上迁移,否则 - 向下到输入版本.
| 归档时间: |
|
| 查看次数: |
38531 次 |
| 最近记录: |