[CakePHP]主キー以外で保存する場合はupdateAllを使う

[CakePHP 1.2.3]

主キー以外で保存する場合、どのようにやるのがいいのでしょうか。
実は、ものすごく単純なのですが、updateAllを使います。

いや、「主キー以外といってもユニークキーだからupdateAllじゃなくていいよ! 」という方もいるかもしれませんが、基本的にはそれ以外で対応していません笑

例えば、ArticleとUserモデルがあったとして、
Articleモデル内に、user_idがあったとして、user_idを元にArticleモデルを更新する場合は、コントローラー内で、 以下のようにします。

[php]
$this->Article->updateAll(
array(‘変更するフィールド’ => ‘変更内容’),
array(‘Article.user_id’ => $user_id),
);
[/php]

上でそれ以外方法はないと書いたのですが、以下のようにすることは可能です。

[php]
$this->Article->id = $this->Article->field(‘id’, array(‘Article.user_id’ => $user_id));
$this->Article->save($data);
[/php]

当たり前ですが、この場合は複数カラムを変更することは出来ません。ユニークキーで検索する場合は使えます。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.