CakePHPでプライマリキー(ID)を0で指定するとsaveメソッドでupdateが出来ない件

5485 回閲覧 このエントリーをはてなブックマークする この記事のブックマークユーザー 永続的リンク2008/07/23 14:34:20 カテゴリ: CakePHP
スポンサード リンク


cakePHP



 saveする時にちょっとはまったこと。今までidを0でやったことがなかったので気付かなかったのですが。


インサート

$cond = array("name" => "hogehoge");
$this->Model->save($cond);


アップデート

idを指定してあげることで、IDが存在する場合はアップデートになる。

$cond = array("id" => "1" ,"name" => "hogehoge");
$this->Model->save($cond);


このときID(プライマリキー)を0(ゼロ)に指定すると、ID、0が存在していてもUPDATEはされない

saveを定義しているところを見ると

if (!empty($this->id)) {
    //アップデート
} else {
   //インサート
}

となっているため。


issetでもいいんじゃない?と思ったのですが、これに関するチケットで同様のことが書かれていますけど、ボツになってます。

というのも、この処理は意図的にemptyになっていて、多くのDBサーバーではauto increment/serialで0は許可されていない。ということで、こういう処理になっているようです。

だから0は使わない方がいいですね。

 →ツイッターのフォローはこちら
スポンサード リンク
         

関連記事

↑ページ上部へ

アクセスカウンター

今日 : 4 昨日 : 52

ブログ内容

主にウェブ関係のことを書いてます。たまにブレイクダンスとか他のことも書いています。

プロフィール

MICK

MICKです。

1983年1月24日生まれ。ウェブの世界にいるのは、偶然のようで必然なのかも。

好きなこと :
 挑戦すること。物事に没頭すること。勉強すること。
嫌いなこと :
 自慢話を聞くこと。人の悪口を言うこと。

運営サイト

      

カテゴリ一覧

サイト広告

オススメの書籍とか

感想

紹介

色々

最近のコメント

最新記事

注目記事

人気記事

最近の人気記事

人気の記事

関連サイト

運営サイト

色々

最近のトラックバック