Leo*_*lis 5 mysql propel redeclare
我有以下表格:
user,logbook,user_logbook
用户日志是一个联结表(isCrossRef="true"在schema.xml中),包含user_id和logbook_id外键.
我还想记住任何给定用户当前选择的日志,所以我current_logbook_id也在我的user表中放了一个,并给了一个外键.但是,在我的BaseUserQuery.php文件中,我得到了两个filterByLogbook()函数.
我知道,当你有两个外键到同一个表,从相同的表,你得到的功能,如getUserRelatedBySomething()和getUserRelatedBySomethingElse(),但什么是在这种情况下做的最好的事情吗?
我当然可以删除外键并只使用保存的ID,或者我想我可以创建一个新的联结表(虽然这似乎不正确).在这种情况下,最好的做法是在MySQL 和 Propel 中"做正确的事"(希望我能够做到这两点!).
在用户表定义的外键中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()并且没有碰撞。
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |