質問

私はCakePHPアプリケーションで非常に本質的なデータベースを使用していますが、これまでのところ、私のマルチモデルビューとコントローラーは正常に動作しています。外部キー entity_id

として他のいくつかのテーブルに id を持つ単一のテーブル( Entity )があります

一部のテーブルは1対1のリレーション( Company は1つの Entity と同様)および一部は1対多( Entity は複数 Addresses )など。

データベースモデルを変更しない/変更できないので、これが構造です。

saveAll()を使用して、次のような入力名でこれらのテーブルにデータを保存しました。

Entity.type='x' (hidden inside the view)
Company.name
Address.0.street
Address.0.city
Address.1.street
Address.1.city

... and so on ...

そしてすべてを保存することは、すべての難しい仕事、 BEGIN TRANSACTION 、すべての INSERT 、最後の COMMIT を実行しています...

ただし、n対nの関係である EntityCategory を作成し、モデル内に完全な HABTM 関係を作成しました。

これは save()で動作しますが、 HABTM 関係のみで機能し、 saveAll()を使用するとすべてを保存します(ちょうど以前と同様) HABTM 関係を除く。

何か不足していますか?これをどのように正しく機能させるのですか?今日は次のコードを使用しています:

if (!empty($this->data)) {
  $this->Entity->saveAll($this->data);
  $this->Entity->save($this->data);
}

saveAll()はすべてのデータを複数のテーブルに保存し、 Entity-> id にidを保存し、 save()は保存します HABTM の関係ですが、それが正しいかどうか、または構造/モデルを変更すると問題が発生するかどうかはわかりません。

これはそれを使用する最良の方法ですか? CakePHP内にその関係を保存する正しい方法はありますか?あなたの経験/知識は何を教えてくれますか?

役に立ちましたか?

解決

夜間をダウンロードした場合、これは修正されます。

しかし、他の何かが壊れる可能性があることに注意してください。

他のヒント

saveAll()およびHABTMアソシエーションの問題は、既知のCakePHP 問題であり、 1.2 RC2の時点では解決されていません。

関連するモデルデータを保存するための最良の方法としてのfasは、CakePHP クックブック

  

"関連付けられたモデルを使用する場合、モデルデータの保存は常に対応するCakePHPモデルによって行われる必要があることを認識することが重要です。新しい投稿とそれに関連するコメントを保存する場合は、保存操作中に投稿モデルとコメントモデルの両方を使用します。"

ただし、saveAll()およびsave()を使用しても機能するはずです。IMHOはより柔軟で一般的なソリューションです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top