2012-01-04 8 views
1

私はアプリケーションを作成しましたが、すべてのdbテーブルにはCakephpのデフォルト機能によって自動的に満たされる ' フィールドタイプは作成された変更された関数(デフォルト)はCakephp 1.2のバージョンでは機能しません

created datetime NULL, 
modified datetime NULL, 

となります。 しかし、それは動作しません。データは0000-00-00 00:00:00フォーマットを示しています。

cakephpのバージョンは1.2です。したがって、datetimeのNULLオプションを入れて、モデル内の一時ファイルやキャッシュファイルも削除しました。

これらの2つのフィールドに正しい日付&の時刻形式を保存する必要があります。 XAMPPのバージョンに問題がある場合は

は(私はXAMPPの最新バージョンを使用し、1.7.7 PHP:5.3.8 & MySQLのV 5.5.16)

は、私はすべてが私の問題を識別していることを願っています。 正しい解決策を教えてください。

答えて

4

私はCakePHP 2.1.3でも同じような問題がありましたが、作成された列と変更された列は現在の日時の代わりに0の束を挿入しています。

問題は、関連するモデルの既存のキャッシュでした。この自動datetimeの作業を行うために、既存のモデルキャッシュを削除する必要がありました。キャッシュはapp/tmp/cache/models /にあります。

最初の作成後にテーブルの構造を変更し、作成したフィールドを追加したため、この問題が最初に発生したと思います。

モデルキャッシュを一度削除した後、正常に動作していました。

+0

ありがとうDudes、それはうまくいきます... – Jayaprakash

2

あなたの投稿からは分かりません。しかし、あなたは(いつも私を混同)nullだけでなく、nullにフィールドを設定するデフォルト値を設定する必要があります。

ALTER TABLE `your_table` CHANGE `created` `created` DATETIME NULL DEFAULT NULL 

ALTER TABLE `your_table` CHANGE `modified` `modified` DATETIME NULL DEFAULT NULL 

そして、キャッシュファイルをクリアしてみてくださいし、新しいを追加します記録。

+0

返信いただきありがとうございます。私は既に各テーブルに同じを追加しています。ここで作成されたテーブルフィールドは、作成日時NULL、 のdatetime NULLに設定されていますが、データは0000-00-00 00:00:00としてここに保存されます。しかし、コードは機能していません。 – Jayaprakash

+1

上記の解決策は動作しますが、作成したフィールドをNULLに設定する必要はありません。あなたはNOT NULLとすることができ、Cakeは自動的に日付を挿入します。注意する必要があるのは、デフォルト値がまったくないことを確認することだけです。デフォルト値がない限り、NULLまたはNOT NULL – Joseph

+0

DEFAULT NULLは無効なゼロ日付を避けるために推奨されるアプローチです。@Joseph – mark

関連する問題