使用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()?
答案 0 :(得分:2)
您的数据库中有一个Employee
没有User
与之关联。
当只加载一个时,你正在加载一个具有User关联的人,但是当你遍历所有人时,你偶然发现一个没有用户的人,那时你的代码就失败了。
解决方案:找到没有关联Employee
的{{1}}并将其删除,或将User
与之关联。