所以我有这个功能:
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()
给了我一个代理而不是一个实际的Device对象,但我不能再进一步使用getNom()
之后...我试图添加fetch : EAGER
以避免延迟加载但它仍然无法正常工作。
有任何想法吗 ?
看起来属性$studio
可以为NULL。在这种情况下,您需要验证它是否已设置。如果不是,则返回NULL。
真正的代码看起来像这样:
<?php
public function getStudioName(): ?string
{
return $this->studio ? $this->studio->getName() : null;
}