FuelPHPのModel_Crudのcreated at、updated atが更新されない。
FuelPHPのModel_Crudは、dbのinsert,update時に自動的に追加日時・更新日時を更新してくれるはずだが、うまく更新されない。created_at、updated_atのカラム名はあっているのだが、created_at,updated_atには0000-00-00 00:00:00が入っている。更新しても日時が入らない。 原因はちゃんとModel_Crudを継承したクラスで、_mysql_timestamp=trueにしていないこと。ちゃんとヘルプFuelPHP Model_Crud Classにも書いてある。
class Tabletest extends \Model_Crud {
protected static $_table_name = 'tbltest';
protected static $_created_at = 'created_at'; // Field name for a 'created at' field.
protected static $_updated_at = 'updated_at'; // Field name for a 'updated at' field.
protected static $_mysql_timestamp = false; // Set to true to use a MySQL timestamp instead of a UNIX timestamp
}
protected static $_mysql_timestamp = false; // Set to true to use a MySQL timestamp instead of a UNIX timestamp
の場合、Model_Crudは次のようなSQLを発行する。
sql=[INSERT INTO `tbltest` (`name`, `updated_at`, `created_at`)
VALUES ('name-test', 1392031938, 1392031938)]
updated_at、created_atは1392031938のような数値で、UNIX timestampだ。
protected static $_mysql_timestamp = true; // Set to true to use a MySQL timestamp instead of a UNIX timestamp
の場合、updated_at、created_atは'2014-02-10 20:31:13’のような数値になり、ちゃんとDBに入った。
sql=[INSERT INTO `tbltest` (`name`, `updated_at`, `created_at`)
VALUES ('name-test', '2014-02-10 20:31:13', '2014-02-10 20:31:13')]
実は以前もこれにハマってしまったことがあり、2回目なのでちゃんとメモっておこう。