2013-01-20 18 views
0

假設我有兩個具有一對多關係的實體。稱他們爲EntityOne和EntityMany。如果我只有「One」一方的身份證,我該如何保存「多對一」的「多」方?

我想保存一個EntityMany到數據庫。 我沒有EntityOne的實例,但我知道所需的entity_one_id。

有沒有辦法保存EntityMany而不從數據庫中檢索EntityOne的實例?

我不想對保存的EntityMany做任何事情。我只是想保存它。

我在這種情況下能夠保存EntityMany的唯一方法是從數據庫中檢索EntityOne,執行$ entity_many-> setEntityOne($ entity_one),然後堅持EntityMany。

這樣的工作,但它似乎是一個EntityOne時,所有的數據庫需要的ID是不必要的查詢。我試着簡單地實例化一個新的EntityOne()並設置id(我必須爲自動生成的整數id添加一個setter),然後使用未保存的實例,但Doctrine不滿意幾個錯誤。

回答

1

EntityManager有一個方法「getReference」 - 你可以用它來實現你的目標。它應該是這個樣子的是:

​​

看吧:

http://docs.doctrine-project.org/en/latest/reference/configuration.html#proxy-objects

+0

感謝。正是我在找的東西。 – tetranz

+0

另一個想法。相反呢?假設我有一個EntityMany的實例。我沒有訪問它的getEntityOne()方法,所以在延遲加載時,EntityOne尚未加載。有沒有什麼方法可以知道它的EntityOne的id,而不是實際上用$ entityMany-> getEntityOne() - > getId()加載它。 – tetranz

+0

這裏是你的答案:http://stackoverflow.com/questions/9634190/how-do-you-get-an-associated-entitys-id-without-loading-the-associated-entity。 – Cyprian

相關問題