Propel ORM:Versionable + Concrete继承行为问题

时间:2013-02-26 10:44:21

标签: inheritance foreign-keys propel

当我联合使用versionableconcrete_inheritance行为时,我遇到了问题:

propel > om-template:
[propel-om] Loading XML schema files...
[propel-om] 3 tables found in 1 schema files.
[propel-om] Generating PHP files...
[propel-om]     -> Updating Library/Model/om/BaseBookPeer.php (table: book, builder: PHP5PeerBuilder)
PHP Fatal error:  Call to a member function getPhpName() on a non-object in 
  C:\wamp\www\library\vendor\propel\propel1\generator\lib\behavior\versionable\VersionableBehaviorObjectBuilderModifier.php on line 313

这是一个简单的例子来解释它:

UML Schema

一切都是可版本化的。 简单的Page-Cover模式不会导致任何问题,Book-Page也不会导致任何问题。但是当我开始使用3个表时,我得到了上一个错误。

通常,我们使用外键和全局auto_add_pk行为得到此错误(因为行为在外键后被解释,推动无法在引用的表中找到主键)。

我的schema.xml

<?xml version="1.0" encoding="UTF-8"?>
<database name="library" namespace="Library\Model" defaultIdMethod="native">

    <table name="book">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
        <column name="title" type="varchar" size="255" required="true" primaryString="true" />
        <!-- #### This following behavior is my problem #### -->
        <behavior name="versionable">
            <parameter name="log_created_at" value="true" />
            <parameter name="log_created_by" value="true" />
            <parameter name="log_comment" value="true" />
        </behavior>
    </table>

    <table name="page">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
        <column name="num" type="integer" required="true" />
        <column name="text" type="longvarchar"/>
        <column name="book_id" type="integer" required="true" />
        <foreign-key foreignTable="book">
            <reference local="book_id" foreign="id"/>
        </foreign-key>
        <behavior name="versionable">
            <parameter name="log_created_at" value="true" />
            <parameter name="log_created_by" value="true" />
            <parameter name="log_comment" value="true" />
        </behavior>
    </table>

    <table name="cover">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
        <behavior name="concrete_inheritance">
            <parameter name="extends" value="page" />
        </behavior>
    </table>

</database>

有任何建议可以帮助我理解吗?

0 个答案:

没有答案