Symfony - Doctrine实体的返回类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony - Doctrine实体的返回类型相关的知识,希望对你有一定的参考价值。

php7开始我们就知道可以声明函数的返回类型。然后,如果该函数返回其他内容,则抛出异常。

现在,当我的Symfony项目中的函数返回一个Doctrine实体时,我想使用这个新功能。所以我试图声明一个这样的函数:

public function getEntity(array $conditions, string $entityClass): ?object
{
    // some logic...
    return $queryBuilder->setMaxResults(1)->getQuery()->getOneOrNullResult();
}

如你所见,它必须返回nullobject变量。然而,似乎object没有按预期工作,因为我有一个例外:

类型错误:HelperBundle的返回值 MyHelper :: getEntity()必须是HelperBundle object的实例或null,返回AppBundle Entity MyEntity的实例

我实际上不确定这个消息的含义:应该返回的对象派生自位于HelperBundle的类还是什么?

但一般来说,有没有办法在不使用自定义基类或接口的情况下为通用Doctrine实体声明返回类型?

答案

我刚刚阅读了一篇关于此的文章,并且不支持将返回类型提示作为对象

但是你可以在PHP 7.2中使用:http://php.net/manual/en/migration72.new-features.php

另一答案

为了解决你的第一个问题,我将只说这个声明

public function getEntity(array $conditions, string $entityClass): ?object

由PHP <7.2理解,就像你在object命名空间中声明了HelperBundle类一样。

以上是关于Symfony - Doctrine实体的返回类型的主要内容,如果未能解决你的问题,请参考以下文章

Doctrine|ORM|Symfony:可能与接口或多个实体有关系

Symfony 4 Doctrine存储库不返回一个字段值

Symfony4 / Doctrine,如何选择“不同”的对象? getResult() 返回字符串数组,而不是对象数组

避免 Doctrine 返回完整的相关实体

Symfony 3.4 - Doctrine多对一返回Object ID但不返回Object本身

如何使用 Symfony 2.1 从内部控制器获取 Doctrine 实体的实体管理器