2015-06-03 110 views
0

我找不出来..Symfony2实体外键

为什么我还没有访问Country表?

countryName应该显示Great Britain但它没有。

这是我的转储($用户):

enter image description here

我的我的一片User实体代码:

/** 
* 
* @ORM\ManyToOne(targetEntity="Dashboard\MainBundle\Entity\Country", cascade={"persist"}) 
* @ORM\JoinColumn(name="country_id", referencedColumnName="id", nullable=true) 
* 
*/ 
private $countryId; 

和我一块Country实体代码:

/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

回答

1

取决于你如何获取用户,也许这是一个懒惰的负载,你正在使用哪些只有你明确调用getter才能得到国家,总是得到一个用户的国家尝试:

/** 
* 
* @ORM\ManyToOne(targetEntity="Dashboard\MainBundle\Entity\Country", cascade={"persist"}, fetch="EAGER") 
* @ORM\JoinColumn(name="country_id", referencedColumnName="id", nullable=true) 
* 
*/ 
private $countryId; 

但是我们仍然需要知道如何让用户延迟加载可能会覆盖提取渴望。

+0

我通过'$ User = $ this-> getUser();' – Gemmi

+0

获得用户,那么我给你的这个注解选项应该可以工作。 –

+0

它的工作原理! :) 谢谢。 – Gemmi

1

您的Country对象现在只是一个代理对象 - dump函数不会调用Doctrine来获取相关对象。转储前试着让你的对象,例如:

dump($User->getCountry()): 
dump($User); 

或QueryBuilder的

尝试左连接你Country还是找偷懒的负载信息Doctrine2 here