私はYiiでCDbMigrationを作成して、既存のテーブルへの外部キーを持つ新しいテーブルを作成しています。それは簡単だ。古いテーブルのサムネイルを削除する前に、古いテーブルのすべてのエントリを取得し、id、サムネイル、およびmyfunction(タイトル)を新しいテーブルにコピーしたいと思います。Yii DbMigration他のテーブルへのデータの移動
OLD_TABLE移行が(切り捨て)
CREATE TABLE IF NOT EXISTS `old_table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`thumbnail` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
そして、私はthumbnail
CREATE TABLE IF NOT EXISTS `new_table` (
`old_id` int(11) unsigned NOT NULL, -- foreign key to old_table
`transformed_title` varchar(255) NOT NULL,
`thumbnail` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
なしNEW_TABLEと古いテーブルを持つことになります後のようになります前に、また、変換する機能をmyfunctionis文字列。
CActiveRecordを使用すると、移行で悪い習慣となることがわかりましたが、SQLのスキルが十分ではなく、移行のためにSQLコマンドがあるかどうかを知ることができません。それとも、スクリプトでデータを個別にコピーする必要がありますか(つまり、移行を使用する必要があります)
ええ 'myfunction'はMySQLのものではないので、うまくいきません。代わりに、データを選択してPHPで変換して挿入するコードを書くことにしました。すべてYiiクエリビルダを使用します。 – Matt