如何对数组中的字段求和,该数组是实体

时间:2016-05-25 13:34:36

标签: php symfony

我有一个实体(订单),其属性是一对多到另一个实体(orderRows)。如何汇总orderRows中的totalPrice以获得行的所有价格的grandTotal以获得完整订单的价格?

这是$orderRows实体中的$totalSumOrder属性;

  /**
     * @var array $orderRows
     *
     * @ORM\OneToMany(targetEntity="PmodOrderRow", mappedBy="order", cascade={"persist", "remove"}, orphanRemoval=true) )
     */
    protected $orderRows;

    protected $totalSum;

我试图在我的Order实体中获得此函数的总和;

public function getTotalSum()
    {
        $orderRows = $this->getOrderRows();
        foreach($orderRows as $row){
            $this->totalSum += $row['totalPrice'];
        }
        return $this->totalSum; 
    }

但它不起作用。

在我的OrderRow实体中,我有一个特定行的$totalPrice属性。

那我怎么能实现这个目标呢?

1 个答案:

答案 0 :(得分:0)

方法$this->getOrderRows()应该返回CollectionPmodOrderRow个对象,而不是数组行数组(数组)。

以这种方式尝试:

public function getTotalSum()
{
    $totalSum = 0;
    foreach($this->getOrderRows() as $row){
        $totalSum += $row->getTotalPrice();
    }

    return $totalSum;
}

假设您在PmodOrderRow上有一个总价的吸气剂。

同样递增$this->totalSum并不是一个好主意。每次调用getTotalSum()时它的值都会增加,所以我使用了局部变量。