CakePHP+MySQLの構成で、テーブルのデータ型にtinyint(1)を指定すると、boolean型として扱われてしまい、0か1しか入らなくなるんです…。
そんなん知るかーーーっ!!!
とういわけで、すっかりドハマリしてしまいました。
やろうとしていたことは、tinyint(1)のフラグ的なフィールドを設けておいて、
・初期値は0
・処理Aが終わったものは1に更新
・処理Aが終わっていることを前提とし、処理Bも終わったものは2に更新
みたいなコードを書いたんですけれど、いざ動かしてみると、3番めの処理がどうやっても動かないのです。
debugkitで見ていると、SQLは正常に発行出来ているようだし、手動でフィールドの値を「2」にしてやると、その後の処理もちゃんと動くので、なんでかわからないけれど、
「saveそのものは成功しているのに、2という値が保存されない」
という状態になっているということまではわかりまして。
まぁ確かに、便利だけどトラブルが多いtinyintさんのことなので、と思い、もしかしてCakePHPと相性悪いのか?と(でも今までにも使ったことはあったのですが)
で、ググってみましたらば。
CakePHP and tinyint as boolean
なんじゃそりゃ…orz
いや、気持ちはわかるよ、うん。感覚的には。
「TRUEかFALSE以外のハッキリしないモノなんか挿れないで!」ってことですよね。
わかるんですけど、他のデータベースも扱えるフレームワークで、とあるデータベースの、とあるデータ形式だけ特別ルール適用とか、誰得なんだよ…。
原因がわからなくて、めっちゃ悩んでしまいましたよ…僕の数時間返してください(T_T)