Edited at

CakePHP3のマイグレーションでMySQLのmediumtext型カラムを作る


CakePHP3のマイグレーションでMySQLのmediumtext型のカラムを作る

どうやって書くんだとちょっと調べたのでメモです。


普通には書けない


sample.php

// エラーになる

$table = $this->table('hogehoge');
$table->addColumn('column_name', 'medium_text', [
'null' => false,
]);

どうやらtextでないといけない様子。

ならどう書けばいいのか…?

Cookbookに載ってました


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で普通に書けますが、念のため)