2016-12-20 66 views
4

我用教義查詢的用戶:Symfony:爲什麼isInitialized總是錯誤的?

$customer = $this->getDoctrine()->getRepository('DemoUserBundle:Customer')->find(1); 

但我得到的結果是:

客戶{#1441▼ + 將IsInitialized:假 -id:1 -username:空 -nickname:null -email:null -salt:null -password:null -roles:null -e nabled:空 -lastLogin:空 -expired:空 -expiredAt:空 -created:空 修飾:空 -group:空 -ceilphoneCode:空 -avatar:空 -tasks:空 - 應用:空 -companies:空 -creators:空 -images:空 -company:空 -store:商店{#1440▶} -realName:空 -sex:空 - 年齡:空 - belongsCompany:null -address:null -career:空 -relationProducts:空 -attributes:空 -medias:空 -logs:空 ... 2 }

結果沒有完成,在此用戶的其它數據?爲什麼isInitialized是錯誤的?

+0

當你查詢數據庫的id = 1時怎麼辦? –

回答

1

isInitialized是錯誤的,因爲您從EntityManager得到一個Proxy對象。您可能已加載了一個實體,其ID爲Customer,編號爲1作爲您的應用程序之前的某個關聯。這個相關對象沒有被提取加入(不是急切地加載),因此現在EntityManager返回相同的Proxy。通常find應該返回一個完全加載的對象。

讀也this GitHub post通過這種類似的問題進行了討論

1

我添加fetch="EAGER"到調用該實體的其他實體,這是確定我。

嘗試$customer = $this->getDoctrine()->getRepository('DemoUserBundle:Customer')->find(1);

$customer = $this->getDoctrine()->getRepository('DemoUserBundle:Customer')->find(2);

你就會明白。

相關問題