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

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

2009-09-11

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

元記事:
How to update a single field in CakePHP Danny's Learning Box

単一のフィールドの値を保存するには、saveFieldメソッドがあります。
  1. $this->Post->id = 15;  
  2. $this->Post->saveField('hits', 1);  

実行してみれば分かりますが、`modified`フィールドも更新されてしまいます。
記事のヒット数を増やすだけなら、modifiedが更新されると困る。

そこで、元記事のコード。(オリジナルとは違うよ)
  1. $data = array(  
  2.     'Post' => array(  
  3.         'id' => 15,  
  4.         'hits' => 1,  
  5.         'modified' => false  
  6.     )  
  7. );  
  8. $this->Post->save($data, false, array('hits'));  

第2引数でバリデーションをオフ。
第3引数でセーブしたいフィールドを配列で指定。
実行してみるとmodifiedは更新されず。
  1. 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 件のコメント:

コメントを投稿

人気のエントリー