从实体学说中的对象中检索属性
retrieve attribute from object in entity doctrine
所以我有这个功能:
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
也是一个基本的 return,效果很好。
所以我收到以下错误消息:
Error: Call to a member function getNom() on a non-object
我读过有关延迟加载的内容,我理解为什么 $this->getStudio()
给我一个代理而不是实际的 Device 对象,但在那之后我不能更进一步使用 getNom()
.. .
我尝试添加 fetch : EAGER
以避免延迟加载,但它仍然不起作用。
有什么想法吗?
看起来 属性 $studio
可以为 NULL。在这种情况下,您需要验证它是否已设置。如果不是,return NULL。
真正的代码是这样的:
<?php
public function getStudioName(): ?string
{
return $this->studio ? $this->studio->getName() : null;
}
所以我有这个功能:
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
也是一个基本的 return,效果很好。
所以我收到以下错误消息:
Error: Call to a member function getNom() on a non-object
我读过有关延迟加载的内容,我理解为什么 $this->getStudio()
给我一个代理而不是实际的 Device 对象,但在那之后我不能更进一步使用 getNom()
.. .
我尝试添加 fetch : EAGER
以避免延迟加载,但它仍然不起作用。
有什么想法吗?
看起来 属性 $studio
可以为 NULL。在这种情况下,您需要验证它是否已设置。如果不是,return NULL。
真正的代码是这样的:
<?php
public function getStudioName(): ?string
{
return $this->studio ? $this->studio->getName() : null;
}