Php 有没有一种方法可以将单个继承表用作spreep中的外键表?

Php 有没有一种方法可以将单个继承表用作spreep中的外键表?,php,inheritance,schema,propel,Php,Inheritance,Schema,Propel,在一个项目中,我有一个通用的Meta表,任何其他表都可以使用它来存储额外的数据 元表有一对(target_type,target_id)列,它们引用元条目所涉及的外部表和外键 e、 g users表的元条目将具有(target_type,target_id)=('users',53) 驴子表的元条目将具有(target_type,target_id)=('donkeys',25) Meta的架构如下所示: <table name="meta" phpName="Meta">

在一个项目中,我有一个通用的
Meta
表,任何其他表都可以使用它来存储额外的数据

元表有一对(target_type,target_id)列,它们引用元条目所涉及的外部表和外键

e、 g

  • users表的元条目将具有(target_type,target_id)=('users',53)
  • 驴子表的元条目将具有(target_type,target_id)=('donkeys',25)
Meta的架构如下所示:

<table name="meta" phpName="Meta">
    <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
    <column name="target_id" type="integer" required="true" />
    <column name="target_type" type="varchar" size="50" required="true" />
    <column name="code" type="varchar" size="50" required="true" />
    <column name="value" type="varchar" required="true" />
</table>
但我似乎无法将外键中的关系设置为链接到继承的子类DonkeyMeta

i、 e.这不起作用:

<table name="donkeys" phpName="Donkey">
    /* ...  */
    <foreign-key foreignTable="DonkeyMeta">  
        <reference local="id" foreign="target_id"/>  
    </foreign-key> 
</table>

/* ...  */

有没有办法与推进模式建立这种关系?

不幸的是,没有。我已经实现了与您相同的设置,并且我已经询问了Propel的创建者(他没有给我一个好的答案)。我所能做的就是为涉及的各种实体重写/添加一些方法到*查询类。

不幸的是,没有。我已经实现了与您相同的设置,并且我已经询问了Propel的创建者(他没有给我一个好的答案)。我所能做的最好的事情就是为所涉及的各种实体重写/添加一些方法到*查询类。

好的一点,这个问题对测试和固定装置也有巨大的影响,如前所述好的一点,这个问题对测试和固定装置也有巨大的影响,如前所述
<table name="meta" phpName="Meta">
    <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
    <column name="target_id" type="integer" required="true" />
    <column name="target_type" type="varchar" size="50" required="true" inheritance="single">
        <inheritance key="users" class="UserMeta"/>
        <inheritance key="donkeys" class="DonkeyMeta"/>
    </column>
    <column name="code" type="varchar" size="50" required="true" />
    <column name="value" type="varchar" required="true" />
</table>
<table name="donkeys" phpName="Donkey">
    /* ...  */
    <foreign-key foreignTable="DonkeyMeta">  
        <reference local="id" foreign="target_id"/>  
    </foreign-key> 
</table>