So-net無料ブログ作成
Lancers.jp

CakePHP その7 - createdとmodified - [CakePHP]

CakePHPの便利機能として、DBにcreatedというフィールドをつくっておけば、データの挿入の日時を記入してくれるし、modifiedというフィールドがあれば、更新した時に自動的に更新した日時をいれてくれる。

ところが、このmodifiedがある時、一部のコントローラーで機能しなくなってしまっていた。
これに気づいたのが、オープンの前日(苦笑)それまでは、何度も確認して問題ないことを確かめていたのに…。

さあ、困った。
自分が使っているのが、1.1.15。一体、何が原因なんだろう?
ネットで検索したら、下記の情報が。
http://griffinm.wordpress.com/2007/05/28/why-created-and-modified-fields-might-not-save/

とりあえず、応急処置として、全ての保存前に

$this->data['User']['modified'] = null;


としたら、modifiedが機能した。

うーん、原因が分かんないのがやだな。

ついでに、コントローラーごとに、この機能をオン/オフする変数が欲しい。




nice!(0)  コメント(2)  トラックバック(0) 

nice! 0

コメント 2

NO NAME

テーブルの created, modifed は unsigned int で作成されていますか?
もし、そうであれば
save() に渡すパラメータが
array(
"username" => "hoge",
"hoge" => "moge",
)
でしたら、大丈夫ですが、
array(
"username" => "hoge",
0 => "moge",
)
のように配列の添え字がテーブルのカラム名と一致しないのがあればダメになるようです。

cake 2.0.4 なので多少違うかもしれませんが。
by NO NAME (2012-01-17 11:21) 

sandman

お返事ありがとうございます。

> テーブルの created, modifed は unsigned int で作成されていますか?
そういえば、これ書いていた時(2007当時)は、あんまちゃんとやってなかったかも…。

> のように配列の添え字がテーブルのカラム名と一致しないのがあればダメになるようです。
初めて知りました。近々検証してみます。
Cakeは最近はすっかりご無沙汰しており、完全に浦島太郎状態になってますが。

ご親切に本当にありがとうございました。
こんな古い記事にもコメントがつくなんて、ネットというか、人のありがたみを感じた今日でした。
by sandman (2012-01-17 11:57) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。