Symfony2にPropelフィクスチャをロードする際に問題が発生しました。私は次のスキーマを持っています:
<table name="application" phpName="Application">
<column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
<column name="name" type="varchar" required="true" primaryString="true" />
<behavior name="timestampable" />
</table>
<table name="application_iphone" phpName="IphoneApplication">
<column name="store_id" type="varchar" required="true" />
<behavior name="concrete_inheritance">
<parameter name="extends" value="application" />
</behavior>
</table>
<table name="application_identifier" phpName="IphoneApplicationIdentifier">
<column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
<column name="application_id" required="true" type="integer" />
<column name="identifier" type="varchar" required="true" primaryString="true" />
<foreign-key foreignTable="application_iphone">
<reference local="application_id" foreign="id" />
</foreign-key>
</table>
モデルは正しく構築されます。次のフィクスチャをロードしようとすると、問題が発生します。
Acme\MyBundle\Model\Application:
first_app:
name: "MyFirstApp"
descendant_class: "IphoneApplication"
Acme\MyBundle\Model\IphoneApplication:
first_app_iphone:
id: first_app
store_id: 2342
Acme\MyBundle\Model\IphoneApplicationIdentifier:
first_app_identifier:
identifier: "com.acme.myfirstapp.appstore"
application_id: first_app_iphone
次のエラーが発生します。
[Propel]例外
自動インクリメント主キー(application.ID)の値を挿入できません
IphoneApplicationIdentifierフィクスチャで別の問題が発生しないように、「first_app」アプリケーションを2回追加しました(1つはApplicationに、もう1つはIphoneApplicationに)。
[Propel]例外クラス「Acme\MyBundle \ Model\Application」のオブジェクト「first_app」がデータファイルに定義されていません。
具体的な継承モデルのフィクスチャを挿入するにはどうすればよいですか?