2014-12-05 76 views
0

我寫了一個相當大且複雜的查詢,它在內部使用一個UNION從多個表中進行選擇,然後返回一個混合類型實體的數組。把Symfony2中使用多個實體的Doctrine查詢放在哪裏?

我知道Symfony中的最佳實踐總是將查詢放入存儲庫類中,但我該如何決定將它放入?他們之間沒有父母/子女關係,這兩個實體完全平等。

+1

你可以做一個服務並注入實體管理器 – Matteo 2014-12-05 15:40:08

+0

很難建議將這個查詢放在哪裏而不知道它在做什麼(在業務邏輯上)以及它如何與代碼的其餘部分相關 – FuzzyTree 2014-12-05 15:46:47

+0

謝謝,但是我讀過的最佳實踐,查詢只能在存儲庫中定義。我試圖找到最好的地方放他們沒有打破最佳做法。 – Adam 2014-12-05 15:47:52

回答

1

我通常把它們放在我認爲是上下文中最依賴實體的存儲庫中。

例如,如果我有兩個實體:UserGroup
許多實體可能與組擁有自己的關係,但不能指望Group存儲庫單獨提供每個特定相關函數所需的方法。

這是依賴(擁有方)的責任,使連接和hense提供功能。

所以像getUsersInGroup(Group $group)這樣的方法將屬於UserRepository

但是,你說你的兩個實體之間沒有直接的關係。
在這種情況下,我的第一條評論適用。在查詢的上下文中使用實體更依賴於其他實體的存儲庫。無論哪個實體,都完全取決於你。