从实体原则中的对象检索属性

问题描述 投票:3回答:1

所以我有这个功能:

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以避免延迟加载但它仍然无法正常工作。

有任何想法吗 ?

symfony doctrine entity lazy-loading
1个回答
2
投票

看起来属性$studio可以为NULL。在这种情况下,您需要验证它是否已设置。如果不是,则返回NULL。

真正的代码看起来像这样:

<?php 

public function getStudioName(): ?string
{
    return $this->studio ? $this->studio->getName() : null;
}
© www.soinside.com 2019 - 2024. All rights reserved.