2

Cakephp で間接的に関連付けられたモデルを処理する際に問題が発生しています。私の現在のモデル設定は次のとおりです。

Deliveries hasOne License
License belongsTo Delivery
License hasAndBelongsToMany Product (and vice-versa)
License hasAndBelongsToMany ProductOption (and vice-versa)

これらすべてのモデルに関する情報を 1 つのフォームに保存しようとしています。私が遭遇している欠点は次のとおりです。

  1. フォーム ヘルパーは、1 レベルの深さのフィールド タイプしか認識できないようです。

  2. saveAll() は、1 レベルの深さのレコードしか保存できないようです (複数のモデル フォームの場合)。

私はこれらの問題の解決策をあらゆる場所で探していますが、私は CakePHP を初めて使用するため、これらの問題を処理するための最新の方法または「正しい」方法が何であるかがわかりません。

どんなアドバイスでも大歓迎です。皆さん、ありがとうございました!

編集:失敗した試みのコードをここに投稿しました: http://bin.cakephp.org/saved/58501

4

2 に答える 2

0

saveAll() は、1 レベルの深さのレコードしか保存できないようです (複数のモデル フォームの場合)。

過去にこの制限に出くわしたことがあり、そのときは、フォームを複数の小さなフォームに分割することで回避することにしました。

saveAll および InnoDB テーブルを使用する際に留意すべきことの 1 つは、データベースへの変更をコミットできない場合、Cake がロールバックを実行するため、アトミック トランザクションを取得することです。

そのため、数行の独自のコードで問題を回避できることは明らかですが (Cake の saveAll ワンライナーは期待に応えられないため)、トランザクションが必要な場合は、より多くの時間を費やさなければなりません。

于 2010-05-12T13:11:03.560 に答える