升级迁移
文档
更改内容
首先,不再支持顺序命名(
001_create_users
,002_create_posts
)迁移。CodeIgniter 版本 4 仅支持时间戳方案(20121031100537_create_users
,20121031500638_create_posts
)。如果您使用了顺序命名,则必须重命名每个迁移文件。迁移表定义已更改。如果您从 CI3 升级到 CI4 并使用相同的数据库,则需要升级迁移表定义及其数据。
迁移过程也已更改。您现在可以使用一个简单的 CLI 命令迁移数据库
php spark migrate
升级指南
如果您的 v3 项目使用顺序迁移名称,则必须将它们更改为时间戳名称。
您必须将所有迁移文件移动到新文件夹 app/Database/Migrations。
如果存在,则删除行
defined('BASEPATH') OR exit('No direct script access allowed');
。在 PHP 开始标签后添加此行:
namespace App\Database\Migrations;
。在
namespace App\Database\Migrations;
行下方添加此行:use CodeIgniter\Database\Migration;
将
extends CI_Migration
替换为extends Migration
。Forge
类中的方法名称已更改为使用驼峰式大小写。例如$this->dbforge->add_field
到$this->forge->addField
$this->dbforge->add_key
到$this->forge->addKey
$this->dbforge->create_table
到$this->forge->addTable
$this->dbforge->drop_table
到$this->forge->addTable
(可选)您可以将数组语法从
array(...)
更改为[...]
如果您使用相同的数据库,请升级迁移表。
(开发)在开发环境中运行 CI4 迁移,或使用全新的数据库,以创建新的迁移表。
(开发)导出迁移表。
(生产)删除(或重命名)现有的 CI3 迁移表。
(生产)导入新的迁移表和数据。
代码示例
CodeIgniter 版本 3.x
路径:application/migrations
<?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');
}
}
CodeIgniter 版本 4.x
路径:app/Database/Migrations
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class AddBlog extends Migration
{
public function up()
{
$this->forge->addField([
'blog_id' => [
'type' => 'INT',
'constraint' => 5,
'unsigned' => true,
'auto_increment' => true,
],
'blog_title' => [
'type' => 'VARCHAR',
'constraint' => '100',
],
'blog_description' => [
'type' => 'TEXT',
'null' => true,
],
]);
$this->forge->addKey('blog_id', true);
$this->forge->createTable('blog');
}
public function down()
{
$this->forge->dropTable('blog');
}
}
搜索和替换
您可以使用下表搜索和替换旧的 CI3 文件。
搜索 |
替换 |
---|---|
extends CI_Migration |
extends Migration |
$this->dbforge->add_field |
$this->forge->addField |
$this->dbforge->add_key |
$this->forge->addKey |
$this->dbforge->create_table |
$this->forge->createTable |
$this->dbforge->drop_table |
$this->forge->dropTable |