versionable
とconcrete_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
これを説明する簡単な例を次に示します。
すべてがバージョン管理可能です。単純なPage-Cover
パターンでも問題はありませBook-Page
ん。しかし、3 つのテーブルの使用を開始すると、以前のエラーが発生しました。
通常、このエラーは外部キーとグローバルauto_add_pk
ビヘイビアを使用して発生します (ビヘイビアは外部キーの後に解釈されるため、propel は参照されたテーブルで主キーを見つけることができません)。
私の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>
理解するのに役立つ提案はありますか?