推进过滤CrossRef表

时间:2015-07-06 13:23:25

标签: php mysql orm propel

我是Propel的新手,我偶然通过交叉参考表过滤。

我有4张桌子:

  1. 公司
  2. 垂直链
  3. “垂直连锁公司”
  4. “垂直链子元素”
  5. 第三个表(垂直链到公司)是公司和垂直链子元素之间的交叉参考表。 第四个表(垂直链子元素)具有垂直链表的外键。

    我试图想象它: enter image description here

    我的schema.xml看起来像这样简化:

    公司表

    ArrayList

    垂直连锁公司

    <table name="company">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
        <column name="name" type="varchar" size="255" required="true"/>
    
        [...]
    
     </table>
    

    垂直链

    <table name="verticalcain_company" isCrossRef="true">
        <column name="company_id" type="integer" primaryKey="true"/>
        <column name="verticalchainsubelement_id" type="integer" primaryKey="true"/>
        <foreign-key foreignTable="company" phpName="CompanyElement">
            <reference local="company_id" foreign="id" />
        </foreign-key>
        <foreign-key foreignTable="verticalchainsubelement" phpName="SubVerticalChainElement">
            <reference local="verticalchainsubelement_id" foreign="id" />
        </foreign-key>
    </table>
    

    垂直链子元素

    <table name="verticalchain">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
        <column name="name" type="varchar" size="128"/>
        <column name="sequence" type="integer"/>
    </table>
    

    正如我在开头写的那样,通过生成正确的过滤器我遇到了问题。 我希望通过垂直链过滤所有公司。

    例如,我希望所有在“金融垂直链”中设置“持有”的公司,但我不知道如何完成此过滤。

    我尝试使用VerticalchainCompany的过滤器,如下所示:

    <table name="verticalchainsubelement">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
        <column name="name" type="varchar" size="128"/>
        <column name="verticalChain_id" type="integer"/>
        <foreign-key foreignTable="verticalchain" phpName="PartoOf">
            <reference local="verticalChain_id" foreign="id"/>
        </foreign-key>
    </table>
    

    但我没有结果。 所以我不知道我怎么能意识到这一点。

    有人给我一个解决方案吗?

    提前致谢!

0 个答案:

没有答案