2015-06-03 165 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