这个推进"无法重新声明功能"错误的最正确方法是什么?

Leo*_*lis 5 mysql propel redeclare

我有以下表格:

user,logbook,user_logbook

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

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

我知道,当你有两个外键到同一个表,相同的表,你得到的功能,如getUserRelatedBySomething()getUserRelatedBySomethingElse(),但什么是在这种情况下做的最好的事情吗?

我当然可以删除外键并只使用保存的ID,或者我想我可以创建一个新的联结表(虽然这似乎不正确).在这种情况下,最好的做法是在MySQL Propel 中"做正确的事"(希望我能够做到这两点!).

Rob*_*gar 2

在用户表定义的外键中schema.xml添加phpName 和 refPhpName 属性:

  <table name="user" phpName="User">
    ...
    <foreign-key foreignTable="logbook" phpName="CurrentLogBook" refPhpName="CurrentLogBookUser">
      <reference local="current_logbook_id" foreign="id"/>
    </foreign-key>
    ...
  </table>
Run Code Online (Sandbox Code Playgroud)

然后你应该得到filterByCurrentLogBook()函数filterByCurrentLogBookUser()并且没有碰撞。