Propel に通常の "schema.xml" があり、XML マークアップのブロックが繰り返されていることに気付きました。私はテーブルを持っています。テーブルには10個の子テーブルがあり、各子にはその関係を指定するコードが必要です( 内<table>
):
<column name="id" type="integer" required="true" primaryKey="true" />
<foreign-key foreignTable="process_step">
<reference local="id" foreign="id" />
</foreign-key>
<behavior name="delegate">
<parameter name="to" value="process_step" />
</behavior>
したがって、上記のコードを別のファイル「process-step-pk.xml」に入れ、schema.xml の先頭に以下を追加します。
<!DOCTYPE stylesheet [
<!ENTITY process_step_pk SYSTEM "process-step-pk.xml">
]>
最後に、XML スニペットを挿入する場所で、エンティティ参照を使用します。
<table name="process_step_load">
&process_step_pk;
<column name="url" type="varchar" size="1024" />
<column name="method" type="varchar" size="6" required="true" default="get" />
</table>
クラスを構築しようとすると、次のようになります。
[PHP エラー] DOMDocument::schemaValidate(): 内部エラー: xmlSchemaVDocWalk、現在検証中のノード ツリーに少なくとも 1 つのエンティティ参照があります。この XML スキーマ プロセッサを使用したエンティティの処理は (まだ) サポートされていません。検証前にエンティティを置き換えてください.. [(root)/vendor/propel/generator/lib/task/AbstractPropelDataModelTask.php の 477 行目]
次の理由により、ターゲット "sql-template" の実行に失敗しました: (root)/vendor/propel/generator/build-propel.xml:209:10: XML スキーマ ファイル ((root)/db/schema.xml) はありません検証。検証が失敗した理由については、上記の警告を参照してください (何も表示されない場合は、error_reporting が E_WARNING を表示するように設定されていることを確認してください)。
[phingcall] (ルート)/vendor/propel/generator/build-propel.xml:209:10: XML スキーマ ファイル ((ルート)/db/schema.xml) が検証されません。検証が失敗した理由については、上記の警告を参照してください (何も表示されない場合は、error_reporting が E_WARNING を表示するように設定されていることを確認してください)。
次の理由により、ターゲット "sql" の実行に失敗しました: (root)/vendor/propel/generator/build-propel.xml:194:26: ターゲット ビルドファイルの実行に失敗しました。中止しています。[phing] (ルート)/vendor/propel/generator/build-propel.xml:194:26: 対象のビルドファイルの実行に失敗しました。中止しています。
キー フレーズは、この XML スキーマ プロセッサを使用したエンティティの処理は (まだ) サポートされていないため、私が何をしようとしているのかがわかります。これを別の方法で達成する方法について誰か提案がありますか?
OS X 10.6.8 のコンソールで PHP 5.3.25 を使用しています。