5

我有以下表格:

user, logbook,user_logbook

用户日志是一个联结表(isCrossRef="true"在 schema.xml 中),包含user_idlogbook_id外键。

我还想记住任何给定用户当前选择的日志,所以我current_logbook_id也在我的user表中放了一个,并给了它一个外键。但是,在我的BaseUserQuery.php文件中,我得到了两个filterByLogbook()函数。

我知道当你有同一张表的两个外键时,来自同一张表,你会得到类似getUserRelatedBySomething()and的函数getUserRelatedBySomethingElse(),但是在这种情况下最好的办法是什么?

我当然可以删除外键并使用保存的 ID,或者我想我可以创建一个新的联结表(尽管这似乎不正确)。在这种情况下,就MySQL和Propel 中的“做正确的事”而言,最好的做法是什么(希望我能同时做到这两个!)。

4

1 回答 1

2

在您schema.xmlphpName 和 refPhpName 属性添加到用户表定义中的外键中:

  <table name="user" phpName="User">
    ...
    <foreign-key foreignTable="logbook" phpName="CurrentLogBook" refPhpName="CurrentLogBookUser">
      <reference local="current_logbook_id" foreign="id"/>
    </foreign-key>
    ...
  </table>

然后你应该得到filterByCurrentLogBook()filterByCurrentLogBookUser()功能并且没有冲突。

于 2012-09-05T12:24:33.627 回答