• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CakePHP で、質問させていただきます。CakePHPは、初心者で)

CakePHP初心者のためのデータ追加のエラー

このQ&Aのポイント
  • CakePHPで初心者がデータを追加しようとする際にエラーが発生する問題について質問します。
  • データのセットやDBへのインサートのコードは正しく行われていますが、実際には何も追加されていないようです。
  • エラーメッセージには、INSERT文の実行中にエラーが発生していることが示されていますが、具体的な原因はわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • manimani2
  • ベストアンサー率70% (12/17)
回答No.2

無事に解決できたようで、何よりです(^^ >「Query: SELECT currval('mobilehellows_id_seq') as max 」を、出させないには、何かフラグを設定するのでしょうか? これはデバッグ用の出力ですね、デフォルト設定のままだと出力されます。 app/config/core.php の45~50行目あたりに Configure::write('debug',2); というのがあると思います。この「2」を「1」以下にすれば出なくなると思いますよー。(^^)

besei
質問者

お礼

またまた、ありがとうございます。 カラム      データ型 JOBTYPE   text REFERENCE_NUMBER  text の時、 REFERENCE_NUMBER  10010- 7414601 を探すために、以下のコーディングをしました。 ーーーーーーーーーー $serchData = array("Mobilehellow" => array( "REFERENCE_NUMBER" => trim($item[$hscan_offset]['seirino']), )); $saveData = array("Mobilehellow" => array( "JOBTYPE" => $item[$hscan_offset]['kyujin_syokusyu'], "REFERENCE_NUMBER" => $item[$hscan_offset]['seirino'], )); $data = $this->Mobilehellow->findAll($serchData); if ($data=== false) { $this->Mobilehellow->create(); $this->Mobilehellow->save($saveData); } ーーーーーーーーーーー としたのですが、$dataの戻り値は、FALSEばかりです。 何が、いけないのでしょうか?

その他の回答 (1)

  • manimani2
  • ベストアンサー率70% (12/17)
回答No.1

こんにちは。(^^ もしかしたら違うかもしれませんが、参考までに。 モデルの指定が上手くいっていないのかもしれません。 $this->Mobilehellow->save($saveData); でインサートするには、変数$saveDataの配列の中身が、$saveData['モデル名']['そのモデルで使うテーブルのフィールド名']とならなくてはいけなかった気がします。 ここで、「エラーがでない」ということについてですが、このsave()というのは、「入れるべきものがあれば、インサートし、そうでなければスルーしてエラーも出さない」ものです。変数$saveDataの配列内でモデル名が「Mobilehellow」になっていないならば、このエラーが出ないという現象も納得がいくのではないでしょうか? そこで、ちょっと手数ですが、試しに分かりやすい形で試してみると良いと思います(^^)例えば・・・ $saveData['Mobilehellow']['NUM'] = $item[$hscan_offset]['kyujin_syokusyu']; $saveData['Mobilehellow']['JOBTYPE'] = 'kyujin_syokusyu'; $this->Mobilehellow->save($saveData); とういうような3行の形で試してはいかがでしょうか? これでもダメなようならば、他に原因があるかもしれませんが、それがわかっただけでも一歩前進ということで・・・。

besei
質問者

お礼

アドバイスいただき、ありがとうございます。 テーブルにシリアル値の列を設定していると、駄目だったようです。 その列を削除したら、うまくいきました。 あと、 「Query: SELECT currval('mobilehellows_id_seq') as max 」 を、出させないには、何かフラグを設定するのでしょうか?

関連するQ&A