无法从findAll()获取相关的实体数据

时间:2014-10-06 09:06:31

标签: symfony select doctrine find relational-database

使用findAll加载相关数据时遇到问题(我尝试从相关实体加载属性用户名):

$repository = $this->getDoctrine()->getRepository('MyAwesomeBundle:Employee');

$employees = $repository->findAll();
foreach ($employees as $employee) {
    echo $employee->getUser()->getUsername();
}
die("not work -_-"); 

错误消息:FatalErrorException:错误:在...中的非对象上调用成员函数getUsername()

但是我使用findOne的其他代码工作正常:

$repository = $this->getDoctrine()->getRepository('MyAwesomeBundle:Employee');
$employee = $repository->findOneByCode($code);
die("".$employee->getUser()->getUsername());

我的问题是如果我使用findAll加载所有数据,如何在foreach中加载$ employee-> getUser() - > getUsername()?

1 个答案:

答案 0 :(得分:2)

您的数据库中有一个Employee没有User与之关联。

当只加载一个时,你正在加载一个具有User关联的人,但是当你遍历所有人时,你偶然发现一个没有用户的人,那时你的代码就失败了。

解决方案:找到没有关联Employee的{​​{1}}并将其删除,或将User与之关联。