cakephpのmigrationでsmallintのカラムを作る


cakephp3ではPhinxというツールを使って、データベースのマイグレーションを行うことができます。

型の指定において整数型は「integer」という記述をするのですが、
何も設定しないと「int」型になってしまいます。

→「int(6)」となる

もしsmallintやtinyintなど、他の整数型を指定したい場合、
MySqlであれば以下のように指定すれば良いみたいです。

→「smallint(6)」となる

MysqlAdapter::INT_SMALLは定義元を確認すると「65535」という整数でした。
この数字を直接指定してもうまく行きそうですね。意味はありませんが。

詳しくはPhinxのドキュメントをご確認ください。
http://docs.phinx.org/en/latest/migrations.html#limit-option-and-mysql

 

余談:久しぶりに放置していたブログにアクセスしたら、mysqldが落ちててビビりました。

【cakePHP】Form::inputDefaultsの位置


FormヘルパーのラベルやdivをデフォルトでOFFにしたい場合、
FormHelper::inputDefaults()が便利そう。

しかし、なぜかうまく行かない。

なんでだ……と、色々と試行錯誤して見た結果、
どうやらinputDefaultsを実行する位置がまずかったみたいです。

Form->createを実行したあとで設定するとうまくいきました。
気づいて見れば単純。

PHPでミリ秒単位で現在時刻を取得する方法


PHPで現在時刻を取得する関数にtime()がありますが、
これは秒の精度までしか取得できません。

ミリ秒、マイクロ秒の単位まで取得する場合、
microtime()を使います。

mixed microtime ([ bool $get_as_float = false ] )

PHP5.0以上であれば、引数にtrueを指定することで、
浮動小数点の形でタイムスタンプが取得可能です。
単位は秒です。

PHP4以下の場合、もしくは引数をしていしない場合、
戻り値は以下の形式の文字列になります。

“小数点以下の値[半角スペース]タイムスタンプ(秒)”
例:”0.29529800 1355853826″

よって、以下のように取り出せば、
マイクロ秒精度のタイムスタンプが取得できます。

経過時間などをミリ秒で計算したければ、
1000倍して引き算します。