【发布时间】:2015-10-23 13:07:34
【问题描述】:
所以我有这个功能:
MyProject\Bundle\Entity\Audio;
/**
*
* @return string
*/
public function getStudioName()
{
return $this->getStudio()->getNom();
}
它应该从对象 Studio 中检索属性 nom。
它们是这样定义的:
/**
* @var \MyProject\Bundle\Entity\Device
*/
private $studio;
...
/**
* Get studio
*
* @return \MyProject\Bundle\Entity\Device
*/
public function getStudio()
{
return $this->studio;
}
而->getNom 也只是一个基本的回报,效果很好。
所以我收到以下错误消息:
错误:在非对象上调用成员函数 getNom()
我读过关于延迟加载的文章,我明白为什么$this->getStudio() 给了我一个代理而不是一个实际的设备对象,但在那之后我不能再进一步使用getNom()...
我尝试添加fetch : EAGER 以避免延迟加载,但它仍然不起作用。
有什么想法吗?
【问题讨论】:
-
你能传递整个实体的代码吗?看起来属性
$studio可以为NULL。在这种情况下,您需要验证它是否已设置。如果不是,则返回 NULL。 -
哇,它成功了。非常感谢 ! (只花了 2 个小时...)这里是代码: /** * * @return string */ public function getStudioName() { $data = $this->getStudio(); if(!is_null($data)) { return $data->getNom(); } 返回空值; }
-
太好了,很高兴它帮助了你:)。我已经发布了完整的答案,所以可以关闭。
标签: symfony doctrine entity lazy-loading