Phinx入門
PHPの現場でマイグレーションツールのPhinxを使い始めたのでメモ書きです。少しずつ導入し始めていますが、だいぶ具合が良いです。マイグレーションツールのノウハウなんて暫く前からあるので今更感がありますが、そこは置いておきましょう。
参考ページ
導入
今回は Phinx を個別でインストールします。Composerを使っているのであれば一撃でインストールは完了です。そうでない場合もダウンロードしてきて参照設定すればOKです。CakePHP3ではフレームワーク内に実装されているので cake.php から使う事ができるはず。
# Comporserでインストールする場合 php composer.phar require robmorgan/phinx php composer.phar install --no-dev # コマンドの実行でバージョンが表示されればOK vendor/bin/phinx -V Phinx by Rob Morgan - https://phinx.org. 0.8.1
phinx.yml
が設定ファイルです。 migrationを保存するディレクトリ 、 seedを保存するディレクトリ 、 DBの接続設定 を行います。また、ここで指定したディレクトリも忘れずに作成しましょう。
マイグレーションファイルの作成
# createコマンドで雛形生成 vendor/bin/phinx create NewHogeMigration # マイグレーション名はキャメルケース # migrationディレクリにファイルが作成されました ls db/migration 20170618080652_new_hoge_migration.php
# 20170618080652_new_hoge_migration.php # コマンドで作成した場合 change() メソッドが初期で作成されていますが、 # クエリの実行のみで入門した方が分かりやすいため下の内容に書き換え <?php use Phinx\Migration\AbstractMigration; class NewHogeMigration extends AbstractMigration { /** * create hoges talbe */ public function up(){ $count = $this->execute(' CREATE TABLE `hoges` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; '); } /** * drop hoges table */ public function down(){ $count = $this->execute('DROP TABLE hoges;'); } }
実行
migrate
# upメソッドが実行され `hoges` テーブルが作成されます。 # また、migrationの情報もDBに保持するため、`migrations` テーブルが作成されデータが更新されます。 vendor/bin/phinx migrate
rollback
# downメソッドが実行され `hoges` テーブルが削除されます。
vendor/bin/phinx migrate
初期データの作成
vendor/bin/phinx seed:create HogeSeeder
# HogeSeeder.php <?php use Phinx\Seed\AbstractSeed; class UserSeeder extends AbstractSeed { public function run() { $faker = Faker\Factory::create('ja_JP'); $data = []; ## 100件のダミーデータを作成 for ($i = 0; $i < 100; $i++) { $data[] = [ 'name' => $faker->name, 'kana' => $faker->kanaName($gender = null|'male'|'female'), 'email' => $faker->email, 'created' => date('Y-m-d H:i:s'), ]; } $this->insert('users', $data); } }
Faker
ダミーデータの作成には Fakerを使います。未インストールの場合は composer require fzaninotto/faker
でインストールします。
Seedの実行
# -sオプションでSeedファイルを指定 vendor/bin/phinx seed:run -s HogeSeeder