symfony - 从实体 Doctrine 中的对象检索属性

标签 symfony doctrine entity lazy-loading

所以我有这个功能:

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 也是一个基本的返回,效果很好。

所以我收到以下错误消息:

Error: Call to a member function getNom() on a non-object

我读过有关延迟加载的内容,并且理解为什么 $this->getStudio() 为我提供了代理而不是实际的 Device 对象,但我无法进一步使用 getNom() 之后... 我尝试添加 fetch : EAGER 以避免延迟加载,但它仍然不起作用。

有什么想法吗?

最佳答案

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

真正的代码如下所示:

<?php 

public function getStudioName(): ?string
{
    return $this->studio ? $this->studio->getName() : null;
}

关于symfony - 从实体 Doctrine 中的对象检索属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303100/

相关文章:

javascript - Symfony、Jquery 和 Ajax,附加已附加自身的元素?

symfony - 起始页和登录成功后的页面

php - symfony Doctrine 类型日期时间预期格式 y-m-d h :i:s

Doctrine 批处理迭代高内存使用率

go - 如何在谷歌数据存储中更新实体的特定字段

Heroku 上的 Symfony2 ClearDB 配置

javascript - 如何从 JSON 存储创建 JavaScript 日期对象?

orm - DDD : subclasses & root entities

orm - Eclipselink - 坚持后的ID仍然为空

caching - Symfony - 数据库结果集的缓存