【发布时间】:2023-03-17 21:12:02
【问题描述】:
我最近开始使用 Propel (PHP ORM),我喜欢它,但我有一个非常烦人的问题,即使经过大量尝试也无法解决。我使用逆向工程来创建我的 schema.xml,它在连接之前效果很好。可悲的是,对于我所有的外键,逆向工程只添加了 name 而不是 phpName 属性。无论我尝试使用此name 属性进行连接,我都失败了。在我手动添加 phpName 属性(然后当然是重建模型)之后,连接工作正常。
这里是schema.xml中外键的sn-p(显然没有phpName属性):
<foreign-key foreignTable="users" name="messages_ibfk_1">
<reference local="creating_user_id" foreign="id"/>
</foreign-key>
这是我加入的代码(不起作用):
$messages = MessagesQuery::create()->joinWith('messages_ibfk_1')->findByRecipientId($id);
我尝试了joinWith 值的各种变体,但都没有奏效。在架构之上,此设置处于活动状态:defaultPhpNamingMethod="underscore"
弹出的错误提示是:Unknown relation messages_ibfk_1 on the Messages table.
如果我添加 phpName 属性和值 Author,则连接可以正常工作:
$messages = MessagesQuery::create()->joinWith('Author')->findByRecipientId($id);
由于我有很多外键并且我想要最少/无手动工作,问题是:如何在不手动添加所有 phpName 属性的情况下解决这个问题。要么我找到一种方法来使用它们的常规名称属性访问外键,要么有一种方法告诉 propel 在构建模型时设置 phpName 属性?
我希望有人有一个想法,会是一个很大的帮助! :)
【问题讨论】:
标签: php mysql join foreign-keys propel