Cakeは全く新しいものです。CakePHP:更新時に複数のエントリを保存するhasOne関連のテーブル
私はこのテーブルにContentという名前を付け、ContentMetaという名前のテーブルをcontent_idで関連付けました。 Contentの各エントリには、対応するContentMetaがあります。
私は新しいコンテンツを追加すると、これは私がContentMetaに新しいエントリを追加するために使用しているコードです:
if(!empty($this->data)) {
// Save Content
$this->Content->create();
$content = $this->Content->save($this->data);
// Save Meta
if(!empty($content)) {
$this->data['ContentMeta']['content_id'] = $this->Content->id;
$this->Content->ContentMeta->save($this->data);
$this->Session->setFlash('Content has been saved.');
$this->redirect(array('action' => 'edit', $this->Content->id));
}
}
これは正常に動作し、コンテンツとContentMetaに一から一新しいエントリを追加します。
データの更新(編集モード)については、少し問題があります。 Contentのエントリは問題なく更新されていますが、ContentMetaテーブルでは、1回の更新ごとに新しいエントリが作成されます。ここで
は、更新のためのコードです:
$this->Content->id = $id;
// Update Content
$content = $this->Content->save($this->data);
// Update Meta
if(!empty($content)) {
//Debugger::dump(print_r($this->data,true));
$this->data['ContentMeta']['content_id'] = $this->Content->id;
$this->Content->ContentMeta->save($this->data);
$this->Session->setFlash('Content has been updated.');
$this->redirect(array('action' => 'edit', $this->Content->id));
}
私はそれがこの現象が発生する原因となっている。このブロックでは、いくつかの論理的な誤りだと確信しています。誰か私に間違っているアイディアを教えてもらえますか?
おかげで、 メートル^ E私にとって
パーフェクト。それは仕事とsaveAllがコードを大きな時間を削減するのを助けました。以前はsaveAllを見てきましたが、手動で個々のステップを試してみるまでは使用しないようにしていました。ありがとうNik :) –
すべてのsaveAllはsave()を数回(well __save())呼び出しますが、コードをクリーンアップします – dogmatic69