- 欢迎使用 CodeIgniter
- 安装说明
- 下载 CodeIgniter
- 从老版本升级
- 疑难解答
- CodeIgniter 概览
- CodeIgniter 将从这里开始
- CodeIgniter 概览
- CodeIgniter 特性
- 应用程序流程图
- 模型-视图-控制器
- 设计与架构目标
- 教程 - 内容提要
- 加载静态内容
- 读取新闻条目
- 创建新闻条目
- 结束语
- 向 CodeIgniter 贡献你的力量
- 编写 CodeIgniter 的文档
- Developer's Certificate of Origin 1.1
- CodeIgniter URL
- 控制器
- 保留名称
- 视图
- 模型
- 辅助函数
- 使用 CodeIgniter 类库
- 创建类库
- 使用 CodeIgniter 驱动器
- 创建驱动器
- 创建核心系统类
- 创建附属类
- 钩子 - 扩展框架核心
- 自动加载资源
- 公共函数
- 兼容性函数
- URI 路由
- 错误处理
- 网页缓存
- 程序分析
- 以 CLI 方式运行
- 管理你的应用程序
- 处理多环境
- 在视图文件中使用 PHP 替代语法
- 安全
- PHP 开发规范
- 基准测试类
- 缓存驱动器
- 日历类
- 购物车类
- 配置类
- Email 类
- 加密类
- 加密类(新版)
- 文件上传类
- 表单验证类
- FTP 类
- 图像处理类
- 输入类
- Javascript 类
- 语言类
- 加载器类
- 迁移类
- 输出类
- 分页类
- 模板解析类
- 安全类
- Session 类
- HTML 表格类
- 引用通告类
- 排版类
- 单元测试类
- URI 类
- 用户代理类
- XML-RPC 与 XML-RPC 服务器类
- Zip 编码类
- 数据库参考
- 数据库快速入门: 示例代码
- 数据库配置
- 连接你的数据库
- 查询
- 生成查询结果
- 查询辅助函数
- 查询构造器类
- 事务
- 数据库元数据
- 自定义函数调用
- 数据库缓存类
- 数据库工厂类
- 数据库工具类
- 数据库驱动器参考
- 数组辅助函数
- 验证码辅助函数
- Cookie 辅助函数
- 日期辅助函数
- 目录辅助函数
- 下载辅助函数
- 邮件辅助函数
- 文件辅助函数
- 表单辅助函数
- HTML 辅助函数
- Inflector 辅助函数
- 语言辅助函数
- 数字辅助函数
- 路径辅助函数
- 安全辅助函数
- 表情辅助函数
- 字符串辅助函数
- 文本辅助函数
- 排版辅助函数
- URL 辅助函数
- XML 辅助函数
- The MIT License (MIT)
- 服务器要求
- 关于 CodeIgniter
迁移类
迁移是一种非常方便的途径来组织和管理你的数据库变更,当你编写了一小段 SQL 对数据库做了修改之后,你就需要告诉其他的开发者他们也需要运行这段 SQL , 而且当你将应用程序部署到生产环境时,你还需要记得对数据库已经做了哪些修改, 需要执行哪些 SQL 。
在 CodeIgniter 中,migration 表记录了当前已经执行了哪些迁移,所以 你需要做的就是,修改你的应用程序文件然后调用 $this->migration->current() 方法迁移到当前版本,当前版本可以在 application/config/migration.php 文件中进行设置。
- 迁移文件命令规则
- 创建一次迁移
- 使用范例
- 迁移参数
- 类参考
迁移文件命令规则
每个迁移都是根据文件名中的数字顺序向前或向后运行,有两种不同的数字格式:
- 序列格式: 每个迁移文件以数字序列格式递增命名,从 001 开始,每个数字都需要占三位, 序列之间不能有间隙。(这是 CodeIgniter 3.0 版本之前的命令方式)
- 时间戳格式: 每个迁移文件以创建时间的时间戳来命名,格式为:YYYYMMDDHHIISS (例如: 20121031100537),这种方式可以避免在团队环境下以序列命名可能造成的冲突,而且也是 CodeIgniter 3.0 之后版本中推荐的命名方式。
可以在 application/config/migration.php 文件中的 $config['migration_type'] 参数设置命名规则。
无论你选择了哪种规则,将这个数字格式作为迁移文件的前缀,并在后面添加一个下划线, 再加上一个描述性的名字。如下所示:
- 001_add_blog.php (sequential numbering)
- 20121031100537_add_blog.php (timestamp numbering)
创建一次迁移
这里是一个新博客站点的第一次迁移的例子,所有的迁移文件位于 application/migrations/ 目录, 并命名为这种格式:20121031100537_add_blog.php 。
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Migration_Add_blog extends CI_Migration { public function up() { $this->dbforge->add_field(array( 'blog_id' => array( 'type' => 'INT', 'constraint' => 5, 'unsigned' => TRUE, 'auto_increment' => TRUE ), 'blog_title' => array( 'type' => 'VARCHAR', 'constraint' => '100', ), 'blog_description' => array( 'type' => 'TEXT', 'null' => TRUE, ), )); $this->dbforge->add_key('blog_id', TRUE); $this->dbforge->create_table('blog'); } public function down() { $this->dbforge->drop_table('blog'); } }
然后在 application/config/migration.php 文件中设置:$config['migration_version'] = 20121031100537;
使用范例
在这个例子中,我们在 application/controllers/Migrate.php 文件中添加如下的代码来更新数据库:
<?php class Migrate extends CI_Controller { public function index() { $this->load->library('migration'); if ($this->migration->current() === FALSE) { show_error($this->migration->error_string()); } } }
迁移参数
下表为所有可用的迁移参数。
参数 | 默认值 | 可选项 | 描述 |
---|---|---|---|
migration_enabled | FALSE | TRUE / FALSE | 启用或禁用迁移 |
migration_path | APPPATH.'migrations/' | None | 迁移目录所在位置 |
migration_version | 0 | None | 当前数据库所使用版本 |
migration_table | migrations | None | 用于存储当前版本的数据库表名 |
migration_auto_latest | FALSE | TRUE / FALSE | 启用或禁用自动迁移 |
migration_type | 'timestamp' | 'timestamp' / 'sequential' | 迁移文件的命名规则 |
类参考
- class CI_Migration
- current()
返回: TRUE if no migrations are found, current version string on success, FALSE on failure 返回类型: mixed 迁移至当前版本。(当前版本通过 application/config/migration.php 文件的 $config['migration_version'] 参数设置)
- error_string()
返回: Error messages 返回类型: string 返回迁移过程中发生的错误信息。
- find_migrations()
返回: An array of migration files 返回类型: array 返回 migration_path 目录下的所有迁移文件的数组。
- latest()
返回: Current version string on success, FALSE on failure 返回类型: mixed 这个方法和 current() 类似,但是它并不是迁移到 $config['migration_version'] 参数所对应的版本,而是迁移到迁移文件中的最新版本。
- version($target_version)
参数: - $target_version (mixed) -- Migration version to process
返回: TRUE if no migrations are found, current version string on success, FALSE on failure
返回类型: mixed
迁移到特定版本(回退或升级都可以),这个方法和 current() 类似,但是忽略 $config['migration_version'] 参数,而是迁移到用户指定版本。
$this->migration->version(5);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论