Symfony:为什么isInitialized始终是假的?

时间:2016-12-20 05:25:32

标签: doctrine-orm symfony

我使用了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是假的?

2 个答案:

答案 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);

你会明白的。