1

propel 1.3 と 1.4 では、次の継承構造がうまく機能しました。

テーブル名="支払い方法" baseClass="rwf.lib.SymmetricEncryptedObject">
    column name="id" type="INTEGER" required="true" autoIncrement="true"
primaryKey="true"/>
    列名="識別子" タイプ="INTEGER" 継承="単一"
必須="真">
      inheritance key="1" class="Card" extends="lib.propel.PaymentMethod"/>
      継承キー="2" クラス="RecurringPaymentMethod"
extends="lib.propel.PaymentMethod"/>
      継承キー="4" クラス="DirectDebit"
extend="lib.propel.RecurringPaymentMethod"/>
      継承キー="5" クラス="小切手"
extends="lib.propel.PaymentMethod"/>
      継承キー="6" クラス="PayPal"
extends="lib.propel.PaymentMethod"/>
      inheritance key="7" class="Moto" extends="lib.propel.PaymentMethod"/>
    /列>

ただし、propel 1.5 では、新しい継承を作成するときに言う

inheritance key="8" class="RepeatingPayPal" extends="lib.propel.PaymentMethod"/> 

次のエラーが表示されます

[PHP エラー] 引数 1 が DataModelBuilder::getNewStubObjectBuilder() に渡されました
/usr/local/www/ で呼び出される、null を指定した Table のインスタンスでなければなりません
/extlib/propel-1.5.2/generator/lib/builder/om/PH P5MultiExtendObjectBuilder.phpon
行 119 および定義済み [/usr/local/www/ の行 432
/extlib/propel-1.5.2/generator/lib/builder/DataModelBuilder.php]
[PHP エラー] GeneratorConfig::getConfiguredBuilder() に引数 1 が渡されました
/usr/local/www/ で呼び出される、null を指定した Table のインスタンスでなければなりません
/extlib/propel-1.5.2/generator/lib/builder/DataModelBuilder.phpon
行 434 および定義済み [/usr/local/www/ の行 180
d/extlib/propel-1.5.2/generator/lib/config/GeneratorConfig.php]
[PHP エラー] ObjectBuilder::__construct() に渡される引数 1 は、
/usr/local/www/ で呼び出される、null を指定したテーブルのインスタンス
/extlib/propel-1.5.2/generator/lib/config/GeneratorConfig.phpon
行 183 および定義 [/usr/local/www/ の行 30
/extlib/propel-1.5.2/generator/lib/builder/om/ObjectBuilder.php]
[PHP エラー] DataModelBuilder::__construct() に渡される引数 1 は、
/usr/local/www/ で呼び出される、null を指定したテーブルのインスタンス
/extlib/propel-1.5.2/generator/lib/builder/om/ObjectBuilder.phpon
行 31 および定義済み [/usr/local/www/ の行 160
/extlib/propel-1.5.2/generator/lib/builder/DataModelBuilder.php]

これをほぼ解決するために、 extends セクションから lib.propel を削除できます。しかし、継承クラスを参照する継承を作成すると、同じエラーが発生します。

継承キー="3" クラス="ContinuousAuthorityCard"
extends="lib.propel.RecurringPaymentMethod"/>

(lib.propel の有無にかかわらず)

これがバグなのか設定の問題なのかはわかりませんが、この状況を扱ったドキュメントが見つかりません。上に貼り付けた表の baseClass からわかるように、ここに使用するクラスと、rwf.lib という別のディレクトリにあるクラスがあるため、lib.propel を記述できるようにする必要があると思います。

誰かが私を正しい方向に向けてくれることを願っています。

4

1 に答える 1

0

そのため、最初の問題を解決した lib.propel はもう必要ないと判断しました。

継承で遭遇した 2 番目の問題がありました。これはhttp://www.propelorm.org/ticket/1033に投稿したバグです。

于 2010-07-09T12:44:22.800 に答える