我是Propel的新手,我偶然通过交叉参考表过滤。
我有4张桌子:
第三个表(垂直链到公司)是公司和垂直链子元素之间的交叉参考表。 第四个表(垂直链子元素)具有垂直链表的外键。
我试图想象它:
我的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>
但我没有结果。 所以我不知道我怎么能意识到这一点。
有人给我一个解决方案吗?
提前致谢!