- 更新日: 2016年1月29日
- PHP & CakePHP
CakePHPでカラム追加のマイグレーション
スポンサーリンク
CakePHP 3 で既存の DB テーブルにカラムを追加するマイグレーションの方法です。Rails のマイグレーションと同じように add column(addColumn)の API が用意されているので、それを利用する。
— 環境 —
PHP 5.5.19
CakePHP 3.1.1
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
以下の公式ドキュメントのページが参考になります。
もしコマンドラインのマイグレーション名が “AddXXXToYYY” や “RemoveXXXFromYYY” といった 書式で、その後にカラム名と型が続けば、カラムの追加・削除を行うコードを含んだ マイグレーションファイルが生成されます。$ bin/cake bake migration AddPriceToProducts price:decimal
users テーブルにカラムを追加する例
データベースの users テーブルに role, name カラムを追加する例です。
まずは、マイグレーション用ファイルを生成する。
1 2 3 |
$ bin/cake bake migration AddColumnsToUsers role:string name:string |
生成されたマイグレーション用のファイル。必要があれば修正します。
config/Migrations/*****_add_columns_to_users.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php use Migrations\AbstractMigration; class AddColumnsToUsers 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('users'); $table->addColumn('role', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->update(); } } |
続いて、マイグレート実行。
1 2 3 |
$ bin/cake migrations migrate |
これで users テーブルに role, name のカラムが追加されました。
スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
>> 次の記事 : CakePHPでDBテーブルのカラム名がMySQL予約語に被りエラー
<< 前の記事 : CakePHPでシェル/コマンドラインからタスク実行
- PHP & CakePHP の関連記事
- PHP+MySQLでNo such file or directoryエラー
- bin/cakeコマンドでintlエラーが出る場合の対処(CakePHP)
- CakePHPアプリケーションをCapistranoでデプロイ
- Integrity constraint violation:Column ‘created’ in order clause is ambiguousエラー/CakePHP
- CakePHPでDB関連テーブルのレコード・データを取得
- CakePHPでカラム属性に別名/エイリアスを付ける仮想フィールド
- CakePHPで日付選択フォームのカスタマイズ
- CakePHP3で現在のコントローラー名・アクション名を取得
- PHPインストールでconfigure: error: freetype.h not foundエラー
- CakePHPでログイン後に元のページにリダイレクトさせる
Leave Your Message!