Php 条令阵列集合->;first()返回布尔值

Php 条令阵列集合->;first()返回布尔值,php,doctrine,arraycollection,Php,Doctrine,Arraycollection,嘿,使用属性地理数据的ORM /** *@var GeoData[]|集合 * *@ORM\ManyToMany(targetEntity=“Acme\Bundle\CoreBundle\Entity\GeoData”,inversedBy=“addresses”,cascade=“persist”,fetch=“LAZY”) *@ORM\JoinTable(name=“用户地址地理数据”) */ 受保护的地理数据; 用一个特殊的getter获取第一个地理数据元素 公共函数getmostloc

嘿,使用属性地理数据的ORM

/**
*@var GeoData[]|集合
*
*@ORM\ManyToMany(targetEntity=“Acme\Bundle\CoreBundle\Entity\GeoData”,inversedBy=“addresses”,cascade=“persist”,fetch=“LAZY”)
*@ORM\JoinTable(name=“用户地址地理数据”)
*/
受保护的地理数据;
用一个特殊的getter获取第一个地理数据元素

公共函数getmostlocalgeodatam():?地理数据
{
如果(null=$this->geoData&&$this->geoData->isEmpty()){
返回null;
}
/**@var GeoData$localeGeoDatum*/
$localeGeoDatum=$this->geoData->first();
返回$localeGeoDatum;
}
但每次我使用这个getter时,都会出现一个错误:

TypeError: Return value of ACME\Bundle\CoreBundle\Entity\Address::getMostLocalGeoDatum() must be an instance of ACME\Bundle\CoreBundle\Entity\GeoData or null, boolean returned

有什么可能出错的线索吗?根据Doctrine ArrayCollection文档,first()应该返回ArrayCollection的第一个元素。

如果不应该是
,而是应该是
条件。

如果(null==$this->geoData&$this->geoData ismpty())这行是否正确?首先验证geoData为null,然后验证其是否为空(但仅当geoData为null时)。这应该会产生一个意外的行为,我想
如果(is_null($This->geoData)|($This->geoData->isEmpty())
工作得更好…也许
首先()
内部使用,当数组为空时返回
false
。因此,按照Gowire建议的方式修复您的条件应该可以清除此问题。如果您查看的真实签名,您将看到它被标记为返回结果或false。非常感谢您的明确更正!