我正在尝试在集合中的最后一个元素上获取属性。我试过了
end($collection)->getProperty()
和
$collection->last()->getProperty()
没有用
(告诉我,我正在尝试在布尔值上使用getProperty()
)。
/**
* Get legs
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getLegs()
{
return $this->aLegs;
}
public function getLastlegdate()
{
$legs = $this->aLegs;
return $legs->last()->getStartDate();
}
知道为什么吗?
您遇到的问题是因为集合是空的。在内部last()
方法使用end()
php函数,from the doc:
返回最后一个元素的值,或返回空数组的FALSE。
所以改变你的代码如下:
$property = null
if (!$collection->isEmpty())
{
$property = $collection->last()->getProperty();
}
希望这个帮助
这个$collection->last()->getProperty()
打破了得墨忒耳的法则。该功能应该只有一个责任。试试这个。
/**
* @return Leg|null
*/
public function getLastLeg(): ?Leg
{
$lastLeg = null;
if (!$this->aLegs->isEmpty()) {
$lastLeg = $this->aLegs->last();
}
return $lastLeg;
}
/**
* @return \DateTime|null
*/
public function getLastLegDate(): ?\DateTime
{
$lastLegDate = null;
$lastLeg = $this->getLastLeg();
if ($lastLeg instanceOf Leg) {
$lastLeg->getStartDate();
}
return $lastLegDate;
}