3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-11-09

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

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?