CakePHP3のマイグレーションでMySQLのmediumtext型のカラムを作る
どうやって書くんだとちょっと調べたのでメモです。
普通には書けない
sample.php
// エラーになる
$table = $this->table('hogehoge');
$table->addColumn('column_name', 'medium_text', [
'null' => false,
]);
どうやらtext
でないといけない様子。
ならどう書けばいいのか…?
Limitオプション
どうやらLimitオプション
を使うといけるらしいです。
具体的な書き方は
sample.php
// OK
$table = $this->table('hogehoge');
$table->addColumn('column_name', 'text', [
'limit' => Phinx\Db\Adapter\MysqlAdapter::TEXT_MEDIUM // ←これ
'null' => false,
]);
基本的にはMysqlAdapter
を使ってより細かく型を指定できるようでした。
マイグレーションファイルにuse Phinx\Db\Adapter\MysqlAdapter;
を追加すれば、MysqlAdapter::TEXT_MEDIUM
だけでもいけます。
あんまりMEDIUMTEXTとか大きな型を使うことはないと思うんですが、だからこそ使うときに忘れそうなので、備忘録がてらの投稿です。
その他
試してはいませんが、
sample.php
$this->execute('ALTER TABLE hogehoge ADD column_name mediumtext');
多分これでもいけるんじゃないかとは思います。
補足
今回はmediumtext
でしたが、この書き方をすればbigint
なども書けるようになります。
(bigintはbiginteger
で普通に書けますが、念のため)