マイグレーションのアップグレード
ドキュメント
変更点
まず、マイグレーションの連続番号付け(
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
クラス内のメソッド名は、camelCaseを使用するように変更されました。例:$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
に
(任意) 配列構文を
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 |