5

我正在尝试获取集合中最后一个元素的属性。我试过了

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();
}

知道为什么吗?

4

2 回答 2

13

您遇到的问题是由于集合是空的。last()该方法在内部使用文档end()中的php 函数:

返回最后一个元素的值或空数组的 FALSE。

所以改变你的代码如下:

$property = null

if (!$collection->isEmpty())
{
$property =  $collection->last()->getProperty();
}

希望这有帮助

于 2015-09-10T16:49:12.207 回答
0

$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;
 }
于 2019-06-19T08:19:07.433 回答