概要
PHPのマイグレーションツールとしてPhinxがあります。
Phinxはプライマリキーとしてデフォルトでidというカラムを使うので、それを使わないようにする方法を説明します。
方法
まず、Phinxでuserという名前のユーザの情報を管理するテーブルを作成してどのようになっているのか確認します。
この時、プライマリキーをuser_idというカラムにしようとしています。
データベースには、MySQLを想定しています。
$table = $this->table('user');
$table->addColumn('user_id', 'integer')
->addColumn('user_name', 'string')
->addColumn('user_password', 'string')
->create();
しかし、これではuser_idはテーブルのプライマリキーとして使うことができず、プライマリキーとしてidというカラムが新たに作られてしまいます。
そこで、下記のようにコードを書き換えて、プライマリキーにidを使わないようにして、user_idをプライマリキーとして使えるようにします。
$table = $this->table('user', array('id' => false, 'primary_key' => array('user_number')));
$table->addColumn('user_id', 'integer', array('identity' => true))
->addColumn('user_name', 'string')
->addColumn('user_password', 'string')
->create();
idを使わないようにするには、array('id' => false, 'primary_key' => array('user_number'))
のように配列で、idを使わないようにfalseを指定し、primary_keyにプライマリキーとして使いたいカラム名を指定します。
このままでは、プライマリキーがAUTO_INCREMENTにならず不便です。
なので、さらにプライマリキーとなるカラムには'identity' => true
のようにidentity
にtrueを指定します。
あとは、いつも通りcreate()などでテーブルを作成できます。
さいごに
情報が少なく探すのに苦労しました。
公式サイトには情報が少しだけ載っていますが、英語なので理解するのに時間がかかりました。