新しいブログに引っ越しました

tomotomoSnippetは新しいブログに移動しました
http://develtips.com/

2009-09-11

CakePHPで単一フィールドをアップデートする方法

元記事:
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 件のコメント:

コメントを投稿

人気のエントリー