LoginSignup
24
21

More than 5 years have passed since last update.

[cakephp3] Migrationコマンドまとめ

Last updated at Posted at 2015-11-03

cakephp3にはPhinxのmigrationsがデフォルトで入ってます。
cakephp2の頃と比べると性質が異なるので使用できるコマンドまとめ備忘録。

コマンド一覧

php bin/cake.php migrationsの場合

  • php bin/cake.php migrations create HogeHoge
    「hogehoge」という名前のmigrationファイルの雛形を作成してくれます。 こんなの。引数はキャメルじゃないと怒られるよ!
<?php
use Phinx\Migration\AbstractMigration;
class HogeHoge extends AbstractMigration
{
    /**
     * Change Method.
     *
     * Write your reversible migrations using this method.
     *
     * More information on writing migrations is available here:
     * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
     */
    public function change()
    {
    }
}
  • php bin/cake.php migrations migrate
    マイグレーションをDBに適用します。 何も指定しなければ最新状態まで。 migrate -t [Migration ID]で指定した段階まで適用します。
  • php bin/cake.php migrations rollback
    マイグレーションを逆戻りします。 基本は一段階ずつ下がっていきます。 こちらもrollback -t [Migration ID]で指定した段階まで適用します。
  • php bin/cake.php migrations status
    現在のマイグレーションとDBのステータスを表示してくれます。 こんな感じ、分かりやすいですね。
 Status  Migration ID    Migration Name
-----------------------------------------
     up  20151102022648  Initial
     up  20151102083415  AddPriceToDomains
     up  20151102085014  AddConfigToDomains
   down  20151102092745  HogeHoge
  • php bin/cake.php migrations mark_migrated
    これが面白い。 mark_migrated [Migration ID]で指定したマイグレーションを適用したことにします。 Cake側では適用したつもりですが、DBには実際には反映されていない状況になります。 たとえば、こんな状況で。
 Status  Migration ID    Migration Name
-----------------------------------------
   down  20151102022648  Initial
   down  20151102083415  AddPriceToDomains
   down  20151102085014  AddConfigToDomains
   down  20151102092745  HogeHoge

php bin/cake.php migrations mark_migrated 20151102085014

こうなります。

 Status  Migration ID    Migration Name
-----------------------------------------
   down  20151102022648  Initial
   down  20151102083415  AddPriceToDomains
     up  20151102085014  AddConfigToDomains
   down  20151102092745  HogeHoge

DBを先にいじって後からMigrationを書いたときとかに使えそう。

php bin/cake.php bakeの場合

bakeコマンドにも2つほどマイグレーションに関係するコマンドがあります。

  • php bin/cake.php bake migrate
    基本は前述のcreateと一緒。ただ引数はキャメルじゃなくでも大丈夫 それと例えば、 php bin/cake.php migrations create AddConfigToDomains price:decimalと打つと 以下のようなところまでひな形を作ってくれます。(複数には対応してないご様子。
<?php
use Migrations\AbstractMigration;
class AddPriceToDomains extends AbstractMigration
{
    /**
     * Change Method.
     *
     * More information on this method is available here:
     * http://docs.phinx.org/en/latest/migrations.html#the-change-method
     * @return void
     */
    public function change()
    {
        $table = $this->table('domains');
        $table->addColumn('price', 'decimal', [
            'default' => null,
            'null' => false,
        ]);
        $table->update();
    }
}
  • php bin/cake.php bake migration_snapshot
    現在のDBの状況をそのままMigrationファイルにしてくれます。 Cakephp2のころの最初のgenerate -fと似ています。 しかし、本当にDBのそのままをMigrationファイルにするので、使えて最初だけかなと。 差分を取って、Migrationファイルを作ってくれたりはしません。
24
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
21