我最近開始使用Propel(PHP ORM),我喜歡它,但我有一個很煩人的問題,即使經過大量嘗試仍無法解決。我使用逆向工程來創建我的schema.xml,它在連接時非常有用。不幸的是,對於我所有的外鍵,逆向工程只會添加name
而不是phpName
屬性。無論我嘗試如何使用此name
屬性進行加入,我都會失敗。在我手動添加phpName
屬性後(然後重建模型),連接工作正常。使用名稱屬性Propel加入
這裏是在schema.xml中的外鍵的片段(不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.
如果我和值Author
添加phpName
attribut的連接工作正常那樣:
$messages = MessagesQuery::create()->joinWith('Author')->findByRecipientId($id);
由於我有很多外鍵,而且我想要最小/無手動工作,所以問題是:如何解決此問題而無需手動添加所有phpName
屬性。我可以找到一種方法來使用常規名稱屬性訪問外鍵,或者有一種方法可以讓構建模型時建立phpName
屬性的方法?
我希望有人有一個想法,會是一個很大的幫助! :)
非常感謝您對您有用的答案,尤其是所有的細節。我可能會在未來嘗試你的解決方案。由於我幾天沒有得到答案,我通過編寫一個小命令行工具來幫助自己,該工具爲模式中的每個外鍵添加phpName屬性。雖然我認爲這不能通過一個簡單的參數來激活,但這當然不是您的錯。再次感謝您的幫助,再次感謝。 – bobinrinder