我有一個產品對象也聚集了幾個「對象數組」 屬性,類別,顏色,大小等現在 我有一個包含對每個對象數據庫的表... 產品,屬性,類別,顏色,尺寸等 現在我的查詢檢索產品列表有7-8個連接,因爲我的數據庫有一些其他表包含產品的多對多關係其相關實體。PHP - 填充聚合對象 - 最佳實踐
一切都很好。現在問題出現在我從PDO檢索數據時需要填充我的產品 - 以及它的所有聚合對象。 我需要做很多嵌套循環來填充我的產品對象數組,這是一個非常繁瑣的活動,也似乎不是一個很好的編程實踐(直觀)。
我不想使用任何ORM,因爲在我看來,ORM對於這些連接數量效率非常低。
什麼是處理這種情況的最佳實踐。
非常感謝您的時間。
編輯:(基於KIKO軟件評論)
凡我大部分的產品檢索查詢的條款,將包含條件,關係到其聚集的實體,和我之前寫的,我有一些多對多關係也是如此。所以這意味着我已經在使用數據庫資源「甚至」,如果我去懶加載。那麼,在這種情況下,如果加載我的結果的子集,急切加載會是更好的選擇?如果是這樣,我的原始問題再次保持不變;我能否逃避太多的嵌套循環來加載聚合對象?
感謝
謝謝你的解決方案,我可以看看它是否適合根據需要。如果我需要急切加載,是否還有其他解決方法? 其次,檢索過程的原因通常會減慢:從數據庫檢索數據或循環訪問每個記錄以填充對象? (如果數據庫表的大小不是太大) – developer 2015-04-04 18:54:42
你的第一個問題應該在答案中得到回答,而不是在評論中回答。至於你的第二個問題:數據庫訪問的速度遠遠低於將檢索到的數據存儲在php對象中的任何事情。所以每當你不需要訪問數據庫時,你都不應該這樣做。數據庫訪問可以通過很多因素加速,例如:服務器的位置,服務器的速度,索引,正確的數據標準化等等。只是使用連接並不能真正幫到那麼多。但是,每當有疑問衡量它! – 2015-04-04 19:20:59
我已根據您的意見編輯了我原來的問題。謝謝你給我一個方向。 – developer 2015-04-04 19:52:07