2
它看起來像當我忘記把leftJoin放在我的查詢中時,Doctrine會在我選擇它們之後延遲加載關係。也就是說,如果我這樣做:主義:懶惰加載屬性
$property = PropertyTable::getInstance()->createQuery('o')
->leftJoin('o.Features f')
->execute() ;
我仍然能夠訪問財產而$>景點,即使我沒有在此查詢加載它們。所以我認爲Doctrine在內部通過調用另一個'SELECT'來完成它。有沒有辦法通過拋出一些異常來防止這種自動加載?這將幫助我創建更好更快的查詢。
是的,我已經嘗試過,沒有,它不加載Attraction的。但我可以通過$ property-> Attraction訪問它們。我想拋出一些異常,所以在編寫查詢時我不會犯錯。當我製作真正大的節目時,很容易跳過這樣的事情。 – Zeljko 2010-10-22 17:54:45
我相信你可以訪問它們,因爲它觸發了一個新的查詢,因此它是預期的行爲。我認爲這裏的解決方案不是改變機器,而是要更多地關注你如何使用機器。 – Tom 2010-10-23 09:40:49
是的,但主意是防止自動獲取。跳過一些加入大型項目的快速開發是非常容易的。 – Zeljko 2010-10-24 11:51:02