【Cakephp3】addBehavior('Timestamp')で、created,modifiedに自動で日時を入れる。
やりたいこと
今回、フォームから問合せ内容を入力したらその内容と、問合せ日時が自動でDBに登録される機能を作った。
contactsTable
DBのテーブルには、対応完了日時を入れるためのカラムmodifiedを作り、このカラムには自動で日時を入れず、対応完了登録をしたときだけ日時を入れるようにしたい。
問題点
modifiedカラムの、 デフォルト値にしていたcurrent_timestamp()を「なし」に変更したが、フォームから問合せ内容を送った際、自動で日時が入ってしまう。
原因
AppTableにTimestampビヘイビアが書いてあった。
書いた覚えがないので、自動で作られているのかな?
これがあると、カラムのデフォルト設定でcurrent_timestamp()にしていなくても、自動で日時が入ってしまう。
対策
作成時点で日時を入れたいカラム(例えばcreated)には、カラムのデフォルト値でcurrent_timestamp()を入れる。
日時を入れたくないカラムには、current_timestamp()を外して、AppTableのTimestampビヘイビアを消すかコメントアウトすれば良い。
class AppTable extends Table
{
// createdやmodifiedに、自動で日時を入れてくれる。
// MySQLのテーブル上で、createdやmodifiedのデフォルト値に「current_timestamp()」をつけていなくても、
// これを書くと自動で付与されるようになる。
public function initialize(array $config)
{
parent::initialize($config);
$this->addBehavior('Timestamp');
}
}
この記事が気に入ったらサポートをしてみませんか?