Propel中不完整的关键参考是否有用?

时间:2011-10-30 19:05:23

标签: php database-design propel

我正在使用Propel开发一个用户可以开发自己的模式的系统,所以我正在研究一些“边缘情况”。我遇到了一个我认为Propel应该不允许的架构,但它似乎确实构建了。有人可以为此建议一个用例吗?

<?xml version="1.0" encoding="UTF-8"?>
<database name="test" defaultIdMethod="native">
    <table name="test_event">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
        <column name="name" type="varchar" size="50" required="true" />
        <column name="description" type="varchar" size="250" />
        <column name="location" type="varchar" size="250" />
        <column name="nearest_city" type="varchar" size="100" />
        <column name="organiser_id" type="integer" required="true" />
        <!-- This FK is incomplete -->
        <foreign-key foreignTable="test_organiser">
            <reference local="organiser_id" foreign="id" />
        </foreign-key>
    </table>

    <table name="test_organiser">
        <!-- Has composite PK -->
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" />
        <column name="secondary" type="integer" required="true" primaryKey="true" />
        <column name="name" type="varchar" size="50" required="true" />     
        <column name="email" type="varchar" size="100" />
    </table>
</database>

如您所见,事件表对组织者表的外部引用不完整。我原以为Propel会发现它并在构建时把它踢掉 - 但显然不是!我不明白为什么这会有用 - setTestOrganiser中的getTestOrganiserBaseTestEvent方法只能引用复合PK的一部分(当然,因为事件方面只是了解organiser_id部分。)

Propel 1.6.1,PHP 5.2.17。

1 个答案:

答案 0 :(得分:0)

不,他们没用。 Propel目前还没有对此用例进行检查。我已经created a issue了,所以当我们实施它时,你再也不会绊倒它。