アクセサーは、エンティティーがデータベースに永続化される前にも実行されます。 フィールドを変換したいけれど、変換したものを永続化したくない場合、 永続化されない仮想プロパティーの使用をお勧めします。
要するに、データベースに格納する時にも_getHoge()メソッドが呼ばれる。
メソッドが呼ばれるのがイヤならこれを使うな。_getHogeFuga()とか存在しない名前を使いましょう、ってことらしい。
やろうとしたことは、時分秒データをデータベース内では秒数に換算して格納して、表示は時分秒にする、ということ。
入力:11:22:33
データベース値:40953
出力:11:22:33
ここで、_setTime()メソッドに「入力→データベース値」の変換を定義した。
また、_getTime()メソッドに「データベース値→出力」の変換を定義した。
この後者のため、データベース格納時にも変換されてしまい、結果整数値ではなくなるため常にゼロが格納されていた。
解決法は、_getTime()メソッドを_getTimeHms()メソッドに改名。
んで、表示側で「$table->time_hms」として時分秒形式で取得するようにした。。
うーん、なんだかなぁ〜( ・ั﹏・ั)