How to update a single field in CakePHP Danny's Learning Box
単一のフィールドの値を保存するには、saveFieldメソッドがあります。
$this->Post->id = 15;
$this->Post->saveField('hits', 1);
実行してみれば分かりますが、`modified`フィールドも更新されてしまいます。
記事のヒット数を増やすだけなら、modifiedが更新されると困る。
そこで、元記事のコード。(オリジナルとは違うよ)
$data = array(
'Post' => array(
'id' => 15,
'hits' => 1,
'modified' => false
)
);
$this->Post->save($data, false, array('hits'));
第2引数でバリデーションをオフ。
第3引数でセーブしたいフィールドを配列で指定。
実行してみるとmodifiedは更新されず。
UPDATE `posts` SET `hit` = 1 WHERE `posts`.`id` = 15
ミソはmodifiedにnull以外の値を渡すことです。
だから、trueでも良いし、2009-09-11でも良い。
何となく、更新したくないんだからfalseが良いかな、ってことで例ではfalseを代入しました。
It is important that `modified` does not have value of null,
if you don't hope to update `modified` field.
(元記事が英語だから英語で書いてみたけど、あってんのかな?)
CakePHP User in Japan
modifiedフィールドを更新したくない場合・・・
この投稿の問題も解決ですな。
0 件のコメント:
コメントを投稿