[英]Get flushed entities on Doctrine postFlush event
考慮Symfony應用程序中的后續步驟:
postFlush
事件的監聽器, postFlush
事件轉儲工作單元的getScheduledEntityInsertions()
的結果。 persist
和flush
方法 postFlush
監聽器被解雇了 getScheduledEntityInsertions()
調用什么都不返回 預期的行為是,在最后一步,我看到了插入實體的列表,但是如果你看一下UoF的executeInserts()
方法,則為每個實體調用unset($this->entityInsertions[$oid])
,以便從getScheduledEntityInsertions()
返回nothig getScheduledEntityInsertions()
打電話。
Iam發現該案件拒絕補丁: https : //github.com/doctrine/doctrine2/pull/5674和Ocramius建議使用“onFlush”事件來收集所有需要的數據並解雇自定義事件: https ://groups.google 。 COM /論壇/#!話題/學說用戶/ GLJEx0p5kL4
但是,我不明白,它是如何完成的:如果我為myCustomEvent
注冊自定義偵聽器並從onFlush
使用未插入實體列表觸發它 - 它將在實體實際保存到數據庫之前執行( postFlush
觸發)並且無法從此偵聽器中的數據庫。
一種可能的解決方案是在onFlush
和postFlush
事件中使用一個Listener類,在onFlush
使用必要的數據填充內部屬性,在postFlush
從屬性中讀取數據。 但是這個解決方案有局限性:兩個偵聽器方法都必須定義為相同的類; 監聽器不是線程安全的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.