2014-07-15 29 views
0

我創建了一個用戶列表,每個用戶都有一個statusID。此狀態ID是表狀態的FK。ZF 2和Doctrine 2,打印關係結果

我可以堅持,但是當我需要打印此列表時,我無法顯示狀態名稱,只顯示用戶表中的statusID。我的代碼如下:

$repository = $this->getEm()->getRepository($this->entity); 
$query = $repository->createQueryBuilder("u"); 
$adapter = new DoctrineAdapter(new ORMPaginator($query)); 
$paginator = new Paginator($adapter); 
$paginator->setCurrentPageNumber($page); 
$paginator->setDefaultItemCountPerPage(10); 

在我看來,我循環的結果。

forech ($this->user as $user) $user->getStatus()->getName(); 

它返回:

Fatal error: Call to a member function getName() on a non-object 

隨着我的var_dump($分頁程序),它不會帶給我創建了一對多的關係。

實體\用戶

/** 
* @ORM\OneToMany(targetEntity="Sistema\Entity\Status", mappedBy="user", cascade={"persist", "merge", "refresh", "remove"}) 
* @var Collection 
*/ 
protected $status; 

實體\狀態

/** 
* @ORM\ManyToOne(targetEntity="SimplaUser\Entity\User", inversedBy="status", cascade={"persist", "merge", "refresh", "remove"}) 
* @ORM\JoinColumn(name="statusID", referencedColumnName="id", unique=false, nullable=false) 
* @ORM\Column(name="statusID", type="integer") 
* @var User|null 
*/ 
protected $user; 

如何有可能獲得用戶和地位,並在視圖中打印呢?

最好的問候。

回答

0

我的錯誤是在關係列屬性。

* @ORM\Column(name="statusID", type="integer") 

我刪除它,它解決了,現在我的實體是這樣的:

/** 
* @ORM\ManyToOne(targetEntity="SimplaUser\Entity\User", inversedBy="status", cascade={"persist", "merge", "refresh", "remove"}) 
* @ORM\JoinColumn(name="statusID", referencedColumnName="id", unique=false, nullable=false) 
* @var User|null 
*/ 
protected $user; 

對不起,張貼和在同一時刻回答,但它是一個嘗試的作品。希望這可以幫助任何人在未來。

最好的問候。