私はPropel 1.6を使用しており、特定のデータベースのすべてのテーブルをバージョンする必要があります。私はいくつかのテーブルを持っていて、それぞれがスキーマで定義されたバージョン対応テーブルを持っています(テーブル 'ロール'はバージョン対応のテーブルとして 'role_versionable'テーブルを持っています)。 'ロール'にレコードを保存するときに、保存を行う前に既存のレコードをrole_versionableにコピーしたいと思います。doSelectでPropelオブジェクトの初期コピーを取得する
これはそれ自体は些細なことです。スキーマ全体のbaseClassをカスタムクラス(BaseObjectを拡張)に設定し、生成されたすべての行モデルクラスがこのクラスを拡張しています。私のカスタム保存ルーチンでは、私は新鮮な選択をして、それをバージョン対応テーブルに保存しています。しかし、私はすべての行クラスでdoSelect [One]を傍受することができますが、モデルのすべてのテーブルに対して子オブジェクトを生成する必要はありません。私はpostSelectにフックすることができますか、それを選択した後のオブジェクトの初期状態をつかむために、すべてののdoSelect後に自動的に呼び出される方法がある場合
従って私は疑問に思って?これにより、行をバージョンアップするときに余分な選択を省くことができます。
(詳細:私はarchive_behaviourサポートを信じていないもの、バージョンテーブルに余分なメタデータを追加する必要があるように私は、カスタム方法でこれをやっている)
一つのアプローチは、(システムはので、私は、ユーザーに代わって、プログラムでそれをしなければならないでしょうDBアプリケーションですが、それはかなり達成可能である)私の仲間のそれぞれの子クラスを生成することです。これは私に各doSelectにフックする機会を与えるだろうが、少し控えめであると感じる。だから...どんなアイデア? :-) – halfer
StackOverflowが言っています: "この質問には、+50名の評判の賞金がありました。あなたは賞金を授与するのに23時間あります"。 Bah;正確にゼロの回答を受け取ったので、私は超人的忍耐のために自分自身にそれを授与することができますか? :) – halfer
私はPropelメーリングリストでこのメッセージを返すかもしれません。しかし、私の最初のコメントでアプローチを取ることは相当な努力ではありません。アプローチの中で最もエレガントではありませんが、確かに動作するようにしてください。 – halfer