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();
}
如你所见,它必须返回null
或object
变量。然而,似乎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:可能与接口或多个实体有关系
Symfony4 / Doctrine,如何选择“不同”的对象? getResult() 返回字符串数组,而不是对象数组