mysqlでtinyintがbooleanになる件
mysqlでtinyint(1)を指定したカラムのデータをcakephp3のモジュールで取得した際に、booleanとして扱われて困った。。
mysqlのバージョンは5.6.27
cakeのバグか?とも思ったんですが、リファレンスを見てみるとちゃんと書いてあった!
・BOOL、BOOLEAN
These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true:
MySQL :: MySQL 5.6 Reference Manual :: 11.1.1 Numeric Type Overview
mysqlではbooleanはtinyint(1)のシノニムであり、0はfalse、0以外はtrueとして評価するとのことなので、cakeはtinyint(1)の値をbooleanに変換して処理してしまうようです。
ただ、実際にtinyint(1)には-128~127の整数値を入れられるので、ハマってしまう人も多いのではないでしょうか。