ZF 2和Doctrine 2,打印关系结果

时间:2014-07-15 13:44:36

标签: zend-framework doctrine-orm zend-framework2

我创建了一个用户列表,每个用户都有一个statusID。此statusID是表状态的FK。

我能够坚持但是当我需要打印此列表时,我无法显示状态名称,只能显示用户表中的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($ paginator),它不会带来我创建的oneToMany关系。

实体\用户

/**
* @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;

如何获取用户和状态并在视图中打印?

最好的关注。

1 个答案:

答案 0 :(得分: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;

很抱歉在同一时间发布和回复,但这是一个尝试有效。希望这可以帮助未来的任何人。

最好的关注。