我使用了doctrine查询用户:
$customer = $this->getDoctrine()->getRepository('DemoUserBundle:Customer')->find(1);
但我得到了结果:
客户{#1441▼ + isInitialized :false -id:1 -username:null -nickname:null -email:null -salt:null -password:null -roles:null -enabled:null -lastLogin:null -expired:null -expiredAt:null -created:null -modified:null -group:null -ceilphoneCode:null -avatar:null -tasks:null - 应用程序:null 公司:null -creators:null -images:null -company:null -store:Store {#1440▶} -realName:null -sex:null -age:null -belongCompany:null -address:null - 职业:无效 -relationProducts:null -attributes:null -medias:null -logs:null ... 2 }
结果未完成,该用户的其他数据在哪里?为什么isInitialized是假的?
答案 0 :(得分:1)
isInitialized
为false,因为您从Proxy
获得了EntityManager
个对象。您可能在应用程序之前的某个位置加载了一个名为Customer
1
的实体作为关联。此相关对象未加入联接(未加载),因此现在从Proxy
返回相同的EntityManager
。通常find
应该返回一个完全加载的对象。
另请阅读this GitHub post,其中讨论了类似的问题
答案 1 :(得分:1)
我将fetch="EAGER"
添加到另一个调用此实体的实体中,这对我来说是好的。
尝试$customer = $this->getDoctrine()->getRepository('DemoUserBundle:Customer')->find(1);
和$customer = $this->getDoctrine()->getRepository('DemoUserBundle:Customer')->find(2);
你会明白的。