CakePHP2.x で find() 取得したデーターのデフォルトはstring型
CakePHP2.xでは、MySQLへのアクセスがPDO(PHP Data Objects)を利用しているため、PDO(mysql)のデフォルト設定の影響を受けて、この動作になるそうです。
PHP5.3以上の環境だと「PDO::ATTR_EMULATE_PREPARES = false」などを行うことで、この動作を変更する事もできると紹介されてますので、必要な方は、次のリンク先を確認ください。
- CakePHPのfind()で取得したデータが全てstring型になるのを、DBのカラムの型に合わせてint型で値を取得する方法(mysql)
- CakePHP+MySQLで、数値型カラムの結果を文字列ではなく数値で取得する
型を厳密に扱いたい場合には、念頭において対応しないといけないとのこと。メモ、メモ。
PDO (PHP Data Objects) について
なおPDOはPHP5.1から標準サポートされて、PHP5.5以降は、古い mysql拡張モジュールは非推奨になってるようです。
現在のところ、PHPからMySQLへアクセスする(推奨)の方法は、PDOを使うか、mysqliを使うかの2択のようですね。
おすすめの API mysqli か PDO_MySQL のどちらかを使うことをおすすめします。 古い mysql 拡張モジュールを新規開発で使うのはおすすめしません。 というのも、これは PHP 5.5.0 で非推奨となり、将来的に削除される予定だからです。