Проблемы наследования с Propel 1.5.2 - PullRequest
1 голос
/ 02 июля 2010

В propel 1.3 и 1.4 следующая структура наследования работала нормально.

table name="payment_method" baseClass="rwf.lib.SymmetricEncryptedObject"> 
    column name="id" type="INTEGER" required="true" autoIncrement="true" 
primaryKey="true"/> 
    column name="discriminator" type="INTEGER" inheritance="single" 
required="true"> 
      inheritance key="1" class="Card" extends="lib.propel.PaymentMethod"/> 
      inheritance key="2" class="RecurringPaymentMethod" 
extends="lib.propel.PaymentMethod"/> 
      inheritance key="4" class="DirectDebit" 
extend="lib.propel.RecurringPaymentMethod"/> 
      inheritance key="5" class="Cheque" 
extends="lib.propel.PaymentMethod"/> 
      inheritance key="6" class="PayPal" 
extends="lib.propel.PaymentMethod"/> 
      inheritance key="7" class="Moto" extends="lib.propel.PaymentMethod"/> 
    /column> 

Однако при использовании propel 1.5 при создании нового наследования произнесите

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

Я получаю следующую ошибку

[PHP Error] Argument 1 passed to DataModelBuilder::getNewStubObjectBuilder() 
must be an instance of Table, null given, called in /usr/local/www/ 
/extlib/propel-1.5.2/generator/lib/builder/om/PH P5MultiExtendObjectBuilder.phpon 
line 119 and defined [line 432 of /usr/local/www/ 
/extlib/propel-1.5.2/generator/lib/builder/DataM odelBuilder.php] 
[PHP Error] Argument 1 passed to GeneratorConfig::getConfiguredBuilder() 
must be an instance of Table, null given, called in /usr/local/www/ 
/extlib/propel-1.5.2/generator/lib/builder/DataM odelBuilder.phpon 
line 434 and defined [line 180 of /usr/local/www/ 
d/extlib/propel-1.5.2/generator/lib/config/Genera torConfig.php] 
[PHP Error] Argument 1 passed to ObjectBuilder::__construct() must be an 
instance of Table, null given, called in /usr/local/www/ 
/extlib/propel-1.5.2/generator/lib/config/Genera torConfig.phpon 
line 183 and defined [line 30 of /usr/local/www/ 
/extlib/propel-1.5.2/generator/lib/builder/om/Ob jectBuilder.php] 
[PHP Error] Argument 1 passed to DataModelBuilder::__construct() must be an 
instance of Table, null given, called in /usr/local/www/ 
/extlib/propel-1.5.2/generator/lib/builder/om/Ob jectBuilder.phpon 
line 31 and defined [line 160 of /usr/local/www/ 
/extlib/propel-1.5.2/generator/lib/builder/DataM odelBuilder.php] 

Теперь, чтобы почти решить эту проблему, я могуудалите lib.propel из раздела extends.но я все еще получаю ту же ошибку, когда я создаю наследование, которое ссылается на класс наследования, т.е.

inheritance key="3" class="ContinuousAuthorityCard" 
extends="lib.propel.RecurringPaymentMethod"/> 

(с или без lib.propel)

Я не уверен, является ли это ошибкой или проблемой конфигурации, но я не могу найти какие-либо документы, которые имеют дело с ситуацией.Я думаю, что мне нужно иметь возможность указывать lib.propel, поскольку у нас здесь есть классы, которые мы используем, а также классы в другом каталоге с именем rwf.lib, как вы можете видеть из baseClass таблицы, вставленной выше.

Надеюсь, кто-то может направить меня в правильном направлении.

1 Ответ

0 голосов
/ 09 июля 2010

Итак, я решил, что мне больше не нужен lib.propel, который получил первую проблему.

Была вторая проблема, с которой я столкнулся с наследованием, и это ошибка, которую я отправил http://www.propelorm.org/ticket/1033, если кто-то заинтересован в этом.

...